django快速入门(四)--模板,部署

django快速入门(一)–简单学生管理系统–主体流程
django快速入门(二)–站点管理与模型
django快速入门(三)–视图
django快速入门(四)–模板,部署

模板

作为Web框架,Django提供了模板,可以很便利的动态生成HTML。模版系统致力于表达外观,而不是程序逻辑。
模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。
模板语言包括
变量
标签 { % 代码块 % }
过滤器
注释{# 代码或html #}

变量

{{ variable }}

当模版引擎遇到一个变量,将计算这个变量,然后将结果输出
变量名必须由字母、数字、下划线(不能以下划线开头)和点组成
当模版引擎遇到点("."),会按照下列顺序查询:

字典查询,例如:foo["bar"]
属性或方法查询,例如:foo.bar
数字索引查询,例如:foo[bar]

如果变量不存在, 模版系统将插入’’ (空字符串) 。

标签

语法

{ % tag % }

在输出中创建文本;控制循环或逻辑;加载外部信息到模板中供以后的变量使用。
for标签

{ %for ... in ...%}
循环逻辑
{{forloop.counter}}表示当前是第几次循环
{ %empty%}
给出的列表为或列表不存在时,执行此处
{ %endfor%}

if标签

{ %if ...%}
逻辑1
{ %elif ...%}
逻辑2
{ %else%}
逻辑3
{ %endif%}

comment标签

{ % comment % }
多行注释
{ % endcomment % }

include:加载模板并以标签内的参数渲染

{ %include "foo/bar.html" % }

过滤器

语法:{ { 变量|过滤器 }}
例如{ { name|lower }},表示将变量name的值变为小写输出
可以在if标签中使用过滤器结合运算符

if list1|length > 1

过滤器能够被“串联”,构成过滤器链

name|lower|upper

过滤器可以传递参数,参数使用引号包起来

list|join:", "

default:如果一个变量没有被提供,或者值为false或空,则使用默认值,否则使用变量的值

value|default:"什么也没有"

date:根据给定格式对一个date变量格式化

value|date:'Y-m-d'

模板继承

部署

这里选择一台共有云服务器部署。

服务器配置

在本地开发环境中,执行命令收集所有包。

pip freeze >requirements.txt

将整个项目文件上传到服务器上。同样的,在服务器上安装虚拟环境virtualenvwrapper。
安装所需要的包。

workon [虚拟环境名称]
pip install -r requirements.txt

更改setting.py文件。

DEBUG = False
ALLOW_HOSTS=['*',]表示可以访问服务器的ip

uwsgi

python manage.py runserver:这是一款适合开发阶段使用的服务器,不适合运行在真实的生产环境中
uWSGI实现了WSGI的所有接口,是一个快速、自我修复、开发人员和系统管理员友好的服务器,完全用C编写。
安装uWSGI

pip install uwsgi

配置uWSGI,在项目中新建文件uwsgi.ini,编写如下配置:

[uwsgi]
socket=127.0.0.1:8888 #使用nginx连接时,使用socket
#http=127.0.0.1:8888 #直接做web服务器,使用http
chdir=/home/admin123/mysite #项目根目录
wsgi-file=mysite/wsgi.py # 项目中wsgi.py文件的目录,相对于项目根目录
processes=4
threads=2
master=True
pidfile=uwsgi.pid  #记录pid,用来停止进程
daemonize=uswgi.log  #日志

在一开始单独使用uwsgi做服务器测试时,http=x.x.x.x:8888写的是公网ip,结果有如下报错,应该使用内网ip。

*** Starting uWSGI 2.0.19.1 (64bit) on [Tue Jul 28 22:01:12 2020] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-39) on 28 July 2020 13:45:51
os: Linux-3.10.0-1062.4.1.el7.x86_64 #1 SMP Fri Oct 18 17:15:30 UTC 2019
nodename: qing
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 1
current working directory: /root/mysite
writing pidfile to uwsgi.pid
detected binary path: /root/.virtualenvs/mysite-py3/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
chdir() to /root/mysite
your processes number limit is 7915
your memory page size is 4096 bytes
detected max file descriptor number: 65535
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
bind(): Cannot assign requested address [core/socket.c line 769]
启动:uwsgi --ini uwsgi.ini
停止:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid

nginx + uwsgi + django

使用nginx的作用

  1. 负载均衡:多台服务器轮流处理请求
  2. 反射代理:隐藏真实服务器

实现构架:客户端请求nginx,再由nginx请求uwsgi,运行django框架下的python代码。
安装Nginx可以参考https://blog.csdn.net/qq_22808061/article/details/106127578
编辑conf/nginx.conf文件
加入include /etc/nginx/conf.d/*.conf;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
     include /etc/nginx/conf.d/*.conf;
     }

新建conf/conf.d/123.conf文件

server {
    listen       8080;
    server_name  106.13.232.71;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location /static {
        alias /var/www/static;
    }

    location / {
        uwsgi_pass 127.0.0.1:7788;
        include /etc/nginx/uwsgi_params;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/nginx/html;
    }
}

静态文件的处理

mkdir /var/www/
chmod 777 /var/www
cd /var/www
mkdir static

修改settings.py文件

STATIC_ROOT='/var/www/static/'
STATIC_URL='/static/'

此时登陆站点管理文件会发现没有CSS等样式,运行下面代码用来复制样式。

python manage.py collectstatic

启动uwsgi和nginx之后,登陆网址ip:8080/students/post查看是否可以正常使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值