Django框架总结,从创建项目到部署。

1. Django 简介

Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。

使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 Django 本身基于 MVC 模型,即 Model(模型)+ View(视图)+ Controller(控制器)设计模式,MVC 模式使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。

django3.2版本:官方文档

2. 工程搭建

2.1 安装Django

pip3 install django==3.2

2.2 创建工程

创建工程:demo

django-admin startproject demo

创建子应用:users 

python manage.py startapp users

 注册安装子应用,在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下:

2.3 创建视图

2.3.1 在users.views.py中编写视图代码

from django.http import HttpResponse

def index(request):
    """
    index视图
    :param request: 包含了请求信息的请求对象
    :return: 响应对象
    """
    return HttpResponse("hello the world!")

 2.3.2 定义路由URL

1) 在子应用users中新建一个urls.py文件用于保存该应用的路由。

from django.urls import path,

from . import views

# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
    path(r'index/', views.index),
]

2) 在工程总路由demo/urls.py中添加子应用的路由数据。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'users/',  include('users.urls')),
]
  • 使用include来将子应用users里的全部路由包含进工程路由中;
  • path函数和url函数的区别:官方文档

2.4.  启动运行Django服务

启动django程序

python3 manage.py runserver

在浏览器中输入网址127.0.0.1:8000/users/index/ 可看到返回的信息 

+

3. 配置、静态文件、jinj2模板

3.1 配置文件

3.1.1 BASE_DIR

django项目启动的基础路径

3.12 DEBUG

DEBUG默认为True,在开发调试模式下使用。项目上线时修改为False

3.1.3 本地语言与时区

初始化的工程默认语言和时区为英语和UTC标准时区

LANGUAGE_CODE = 'en-us'  # 语言
TIME_ZONE = 'UTC'  # 时区

将语言和时区修改为中国大陆信息

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

3.2 静态文件

为了提供静态文件,需要配置两个参数:

  • STATICFILES_DIRS=[]  静态文件的目录
  • STATIC_URL 访问静态文件的URL前缀

注意: Django 仅在调试模式下(DEBUG=True)能对外提供静态文件。当DEBUG=False工作在生产模式时,Django不再对外提供静态文件,需要是用collectstatic命令来收集静态文件并交由其他静态文件服务器来提供

3.3 jinja2模板配置

安装:pip3 install jinja2

创建 jinja2_env.py文件:

from jinja2 import Environment

def environment(**options):
    env = Environment(**options)

    return env

在settings.py文件导入模板配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.jinja2.Jinja2',#修改1
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS':True,
        'OPTIONS':{
            'environment': 'jinja2_env.environment',# 修改2
            'context_processors':[
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

4. 部署

使用uwsgi部署(不搭配nginx)

安装:pip3 install uwsgi

项目的路径:/opt/demo

使用命令部署:

uwsgi --chdir /opt/demo/ \
      --module demo.wsgi:application \
      --env DJANGO_SETTINGS_MODULE=demo.settings \
      --processes 4 \
      --threads 2 \
      --http 0.0.0.0:8000

使用配置文件的方式部署

创建uwsgi.ini 配置文件 ,写入如上内容。

[uwsgi]
chdir = /opt/demo/
module =  demo.wsgi:application
env = DJANGO_SETTINGS_MODULE=demo.settings
processes =  4
threads = 2
http = 0.0.0.0:8000

启动命令:uwsgi uwsgi.ini

nginx+uwsgi的方式部署。

uswgi的配置:

[root@python demo]# cat /opt/demo/demo/uwsgi.ini
[uwsgi]
# 使用Nginx连接时使用,Django程序所在服务器地址
socket=192.168.41.41:8000
# 直接做web服务器使用,Django程序所在服务器地址
# http=172.16.21.25:8001
# 项目目录
chdir=/opt/demo/
# 项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=/opt/demo/demo/wsgi.py
# 进程数
processes=4
# 线程数
threads=2
# uwsgi服务器的角色
master=True
# 存放进程编号的文件
pidfile=uwsgi.pid
# 日志文件
daemonize=uwsgi.log
# 指定依赖的虚拟环境
virtualenv=/usr/local/python3

部署static静态文件

  • 创建文件夹
  • mkdir /opt/demo/static
  • 在setting文件中新增变量STATIC_ROOT 
  • STATIC_ROOT = BASE_DIR / "static/"
  • 收集一下静态文件,收集到STATIC_ROOT 目录中
  • python3 /opt/demo/manage.py collectstatic
    
    

对nginx配置进行编辑

使用命令查看nginx配置文件的位置和是否正确

nginx -t

正常输出如下

[root@python demo]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

查看 /usr/local/nginx/conf/路径下有没有uwsgi_params文件,没有从nginx的GitHub页面下载

编辑 /usr/local/nginx/conf/nginx.conf文件

对添加如下内容

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    upstream demo {
        server 192.168.41.41:8000;
    }
    server {
        listen       80;
        #server_name  localhost;
        server_name  192.168.41.41;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
            include uwsgi_params;  # 导入uwsig_params
            uwsgi_pass demo;
        }
        location /static {  # 静态文件的路由
            alias /opt/demo/static;
         }
    }

}

最后

启动uwsgi

uwsgi --ini /opt/demo/demo/uwsgi.ini

重新检查nginx配置文件,确保没问题后重启nginx服务

nginx -t
nginx -s reload

访问成功!:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大帅不是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值