Django makes it easier to build better Web apps more quickly and with less code.
$ pip install Django
$ django-admin startproject 项目名
$ python manage.py runserver
$ python manage.py runserver ip:端口
注意:使用Pycharm专业版
修改 settings.py
中的
LANGUAGE_CODE
为 zh-hans
TIME_ZONE
为 Asia/Shanghai
页面展示的内容就会变成中文
$ python manage.pt startapp 子应用
在全局配置文件 settings.py
中 INSTALLED_APPS
添加 'projects.apps.ProjectsConfig'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 注册子应用
# 子应用名.apps.子应用名首字母大写Config
'projects.apps.ProjectsConfig',
]
# projects/views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('<h1>「测试游记」</h1>')
# LearnDjango/urls.py
from django.contrib import admin
from django.urls import path
from projects.views import index
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', index),
]
刷新页面后可以发现首页消失
根据提示访问:http://127.0.0.1:8000/index/
LearnDjango/urls.py
:
全局路由配置
# projects/urls.py
# -*- coding:utf-8 -*-
"""
@Describe: urls
@Author: zhongxin
@Time: 2019-09-24 07:42
@Email: 490336534@qq.com
"""
from django.urls import path
from .views import index
urlpatterns = [
path('', index),
]
# LearnDjango/urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', include('projects.urls'))
]
每个应用(模块)都会维护一个子路由(当前应用的路由消息) 跟主路由一样,也是由上到下进行匹配 能匹配上,则执行path第二个参数指定的视图,匹配不上抛出404异常
def index(request):
return HttpResponse('<h1>「测试游记」</h1>')
上面就是一个 函数视图
视图函数第一个参数 request
是HttpRequest对象,包含前端用户的所有请求信息
必须返回一个HttpResponse对象或者子对象
def index(request):
if request.method == 'GET':
return HttpResponse('<h1>「测试游记」GET请求</h1>')
elif request.method == 'POST':
return HttpResponse('<h1>「测试游记」POST请求</h1>')
else:
return HttpResponse('<h1>「测试游记」其他请求</h1>')
使用 postman
进行测试
# projects/views.py
from django.views import View
class IndexView(View):
"""
index 主页类视图
"""
def get(self, request):
return HttpResponse('<h1>「测试游记」类视图GET请求</h1>')
def post(self, request):
return HttpResponse('<h1>「测试游记」类视图POST请求</h1>')
# projects/urls.py
from django.urls import path
from projects import views
urlpatterns = [
path('', views.IndexView.as_view()),
]
可以看到其他请求返回了 405
新建 templates/demo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>「测试游记」</title>
</head>
<body>
<h1>「测试游记」模版</h1>
</body>
</html>
修改视图 returnrender(request,'demo.html')
class IndexView(View):
"""
index 主页类视图
"""
def get(self, request):
return render(request,'demo.html')
def post(self, request):
return HttpResponse('<h1>「测试游记」类视图POST请求</h1>')
查看页面
M:模型(Model) 与MVC中的M功能相同,负责和数据库交互,进行数据处理
V:视图(View) 与MVC中的C功能相同,接收请求,进行业务处理,返回响应
T:模版(Template)与MVC中的V功能相同,负责构造要返回的html页面
数据库
<--------> M模型
<--请求/返回数据--> V视图
<--请求/返回模版内容--> T模版
<--展示--> 客户端