1. 认识Django
Django是一个用Python编写的开源高级Web框架,
旨在快速开发可维护和可扩展的Web应用程序。
使用Django框架的开发步骤:
1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护
Django官网:
Django documentation | Django documentation | Django
URL调度器:
2. 安装Django框架
以管理员身份运行终端,并安装django框架:
pip3 install django -i https://pypi. tuna. tsinghua. edu.cn/simple/
显示已安装的 Django 包的详细信息:
pip3 show django
3. 新建并运行Django项目
3.1 新建
新建文件夹内 shift+鼠标右键 在此处打开 Powershell 窗囗(S)
新建一个项目,名称为 my_project :
django-admin startproject my_project
3.2 运行
pycharm终端中运行新建好的项目:
python manage.py runserver
4. Django项目结构
文件名 | 用途 |
---|---|
__init__.py |
空目录,表示该目录应该被视为一个 Python 包 |
asgi.py |
部署项目配置 |
settings.py |
项目的配置和设置,如数据库连接、时区、使用的应用程序等。 |
urls.py |
定义项目的 URL 分发器,即 URL 到视图函数的映射。 |
wsgi.py |
部署项目。 |
db.sqlite3 |
sqlite数据库 |
manage.py |
命令行管理工具,执行各种 Django 管理任务 |
5. 编写Django视图
在setting中,配置访问路径范围:
DEBUG = True 是否支持debug运行
ALLOWED_HOSTS = ['*'] 配置访问路径范围 " * " 表示任意
python
import os
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True #是否支持debug运行
ALLOWED_HOSTS = ['*'] #配置访问路径范围 *:任意
6. 开发新模块
6.1 创建新hello模块
在pycharm终端中输入:
python manage.py startapp hello
执行这个命令后,Django 会在项目目录下创建一个名为 hello
的新目录,
并在该目录中生成一组初始文件
6.2 hello world!
urls.py:浏览器访问地址
参数1:浏览器匹配的字符串
参数2:调用的模块的函数
python
# 配置文件
from django.contrib import admin
from django.urls import path, include
from hello.views import hello_world # 引入模块函数
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello_world),
]
views.py:响应数据工具
由django提供,用于向浏览器返回数据
def hello_world(request): #业务函数
return HttpResponse("Hello World!") #向浏览器响应数据
python
from django.http import HttpResponse
def hello_world(request): #业务函数
return HttpResponse("Hello World!") #向浏览器响应数据
7.多级路由
7.1 一级路由(test_django)
一级路由转二级路由:
python
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/',include('hello.urls'))
]
7.2 二级路由(hello)
在hello文件下创建python文件,名为**"** urls "
7.2.1 URL 配置
在 hello\urls.py下,定义 URL 路由
python
from django.urls import path
from hello.views import hello_world
from hello.views import hello_china
urlpatterns = [
path('world/', hello_world,name='hello_world'),
path('china/', hello_china,name='hello_china'),
]
7.2.2 响应数据工具
工具由django提供,用于向浏览器返回数据
python
from django.http import HttpResponse
def hello_world(request): #业务函数
return HttpResponse("Hello World!") #向浏览器响应数据
def hello_china(request):
return HttpResponse("Hello China!")
小结:
url地址分为不同的级别,其优点:
1.地址目录结构清晰,便于维护
2.高内聚、低耦合:当某一模块被修改时,其他模块不受影响
8.函数视图
创建静态页面
新建temple/ index.html
javascript
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>我的HTML标签</h1>
</body>
</html>
8.1 渲染HTML页面
8.1.1 views.py:
python
def hello_html(request):
html = """
<html>
<body>
<h1 style = "color:#f00;">Hello HTML!</h1>
</body>
</html>
"""
return HttpResponse(html)
8.1.2 hello\urls.py:
python
from django.urls import path
from hello.views import hello_html
urlpatterns = [
path('html/',hello_html,name='hello_html'),
]
8.1.3 代码效果:
8.1.4 配置TEMPLATES
设置
python
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR / 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
8.2 article_list 函数
8.2.1 views.py:
python
def article_list(request,month):
return HttpResponse('article:{}'.format(month))
8.2.2 hello\urls.py:
python
path('article/<int:month>/',article_list,name='article_list'),
8.2.3 代码效果:
8.3 search函数/获取get参数
8.3.1 views.py:
GET:get请求 ; get:获得数据
python
def search(request):
name = request.GET.get('name','')
print(name)
return HttpResponse('查询成功')
8.3.2 hello\urls.py:
python
path('search/',search,name='search'),
8.3.3 代码效果:
8.4 render_to_string()函数
8.4.1 语法结构:
render_to_string(template_name,context=None,request=None,using=None)
参数 | 作用 |
---|---|
template name | 模板名称 |
context | 模板上下文对象(字典dict) |
request | 请求对象 |
using | 模板引擎名称(如:Jinja2) |
8.4.2 views.py:
python
def render_str(request):
page_name = 'index.html'
html = render_to_string(template_name=page_name)
return HttpResponse(html)
#或者
def render_str(request):
return render(request,'index.html')
8.4.3 hello\urls.py:
python
path('render/str/',render_str,name='render_str'),
8.4.4 代码效果:
8.5 render()函数
8.5.1 语法结构:
参数 | 作用 |
---|---|
request | 请求对象 |
template name | 模板名称 |
context | 模板上下文对象(dict) |
content type | MIME类型,默认为text/html |
status | HTTP状态码 |
using | 模板引擎名称(如:Jinja2) |
8.5.2 views.py:
python
def render_html(request):
return render(request,'index.html')
8.5.3 hello\urls.py:
python
path('render/html/',render_html,name='render_html'),