创建Django项目
- 命令行的方式进行创建
- 打开终端
- 输入
django-admin startproject [项目的名字] [ . 指定的目录]
用pycharm进行创建
查看Django的版本
django-admin --version
运行Django项目
通过命令行的方式进行
python manage.py runserver (网址:端口)
# 可以改变端口
创建一个APP
python manage.py startapp [APP 的名字] (路径)
# 可以指定路径
python manage.py startapp api apps/api
基础
打开 DEBUG 模式(在 settings.py 文件中)
DEBUG = True
写路由匹配
path('', index) # 这里不用写上 / ,自带有 /
写返回 response 时
# 首先进行导入
from django.shortcuts import HttpResponse
def index(request):
# request 第一个参数
return HttpResponse('欢迎来到我的网页!')
url 进行传参时,有两种
# 对应的 path 函数的写法
path('book/<int:book_id>', book_detail_id)
def book_detail_id(request, book_id):
# 对应的 path 函数的写法
path('book', book_query_id)
def book_query_id(request):
path 函数的参数
# 第一个参数
str 非空字符串 <str:变量名字>
int 0 或者正数的整形 <int:>
slug 有 _ 或者 - 或者英文或者数字 <slug:>
uuid 匹配 uuid 字符串 <uuid:>
path 匹配字符串 <path:>
路由模块化
在一个 app 的 urls 文件中
from django.urls import path
from . import views
app_name = '' # 写上命名空间
urlpatterns = [
path('', 函数名称, name=''),
]
然后再主项目的 urls 文件中
from django.urls import include
urlpatterns = [
path('', include(?.?))
]
request 对象
request.resolver_match # 获取匹配到的路由相关的信息
request.path_info # 请求的路径
request.method # 请求方法
request.body # 请求体(原始数据)
request.POST# 请求体
request.POST.get('') # 请求体获取其中的值
request.FILES # 文件
request.FILES.get('') # 文件
request.headers # 请求头
request.COOKIES # cookie 信息
路由反转
from django.urls import reverse
reverse('path 函数中 name 的值')
# 当 path 的 url 需要传参时
reverse('', kwargs={'key': value})
# 当一个 app 有命名空间时,在进行 url 反转时
# 必须带上 url 的命名空间
reverse('命名空间 app_name 的值 : path 函数中 name 的值')
渲染模板
第一种方式(不方便)
# 通过 render_to_string 函数
html = render_to_string('HTML文件的名字')
HttpResponse(html)
第二种方式
from django.shortcus import render
def book_list(request):
return render(request, 'HTML文件的名字')
渲染模板的变量
HTML 中
# HTML 中
{{ 这里使用变量 }}
# 变量的使用只能用 . 来进行
# 数组也一样 arr.0
# 在 django 的代码
# 使用 render 函数来给 HTML 进行传参
# 使用字典的形式,context 是一个字典
render(request, 'HTML 文件的名字', context={这里进行参数的传递})
在 HTML 中使用循环遍历
# 遍历数组
{% for ? in ?s %}
{% endfor %}
# 遍历对象
{% for key, value in ?.items %}
{% endfor %}
一些标签的使用
# with 的使用
{% with ?=? %}
{% ? %}
{% endwith %}
# url 的使用
{% url 'path 函数中 name 的值' %}
要想在模板中执行python的函数,只需要传一个函数名就行了,会自动添加一个括号
常见的过滤器
|cut:'' # 进行切割
|date:'' # 格式化字符串
|default:'' # 默认值
|default_if_none:'' # 默认值
|first # 第一个
|join # 组合
|length # 获取长度
|safe # 安全 (对于 html 标签来说)
模板的继承
# 添加
{% include('HTML 文件名') %}
# 继承
{% extends 'HTML 文件名' %} # 必须为文件的第一行
# 留坑
{% block 变量 %}
# 使用父模板
{% block.super %}
导入配置的区别
from 项目名 import settings (少)
from django.conf import settings (多)
开发访问 url 时遇到的问题
APPEND_SLASH = TRUE
# 前提要设置是 debug,然后再设置请求的域名为 *