关于Django使用

本文简要介绍一些关于关于Django的项目部署的相关内容

1. 通常的项目项目结构

2. settings.py

  • DEBUG(bool):

    True:启动调试模式,运行时显示调试信息

  • ALLOWED_HOST(list):

    Debug为True且ALLOWED_HOST为[]时等价于:

    ['.localhost', '127.0.0.1', '[::1]']
    也就是说允许请求头中host为localhost/127.0.0.1的请求去访问
  • LANGAGE_CODE(语言,str):

    ‘en-us’:英文

    ‘zh-Hans’:中文

  • TIME_ZONE(时区):

  • ROOT_URLCONF(主路由):

3. urls.py

  • urlpatterns(路由请求,list):
    • path
    • re_path(正则表达式匹配): 一般形式为^(?P<name>)$
1
2
3
4
5
6
7
from django.urls import path
from Site import views

urlpatterns = [
path(route='test', view=views.test_html, name="test"),
path(route="", view=views.home, name="home")
]

4. views.py

使用函数定义返回数据,通常返回HttpResponse,可以自定义status_code,header等

也可以使用django.shortcut.render函数对模版中的内容进行填充。

1
2
3
4
5
6
7
8
from django.http import HttpResponse
from django.shortcut import render

def home(request):
return HttpResponse("Hello Django!")

def test_html(request):
return render(request, "test.html")

如果考虑前后端分离的话,模版的内容粗略了解即可

5.models.py

主要根据数据库中的内容相关,主要封装同数据库的基本交互功能。

通常使用class来声明数据库中的对象和objs

1
2
3
4
5
6
class Book(models.Model):
title = models.CharField("书名", max_length=50, default="")
price = models.DecimalField("定价", max_digits=7, decimal_places=2, default=0.0)
class Meta:
db_table = 'books'
# 写业务逻辑时调用 Book.objects 中的方法,类似与Mybatis的封装

models.py中的内容更新后,需要在终端输入如下指令来同步:

1
2
python3 manage.py makemigrations
python3 manage.py migrate