1.django命令
创建django项目: django-admin startproject 项目名
创建子应用: python .\manage.py startapp 子应用名
生成迁移文件:python manage.py makemigrations
执行前移:python manage.py migrate
启动项目 python manage.py runserver
2.思考路线图
3.报错问题
原因: 没看清,没仔细看
解决:
- 登录注册
// from django.shortcuts import render,redirect
from django.views import View
from django.http import HttpResponse
from myapp.models import users
class RegisterView(View):
def get(self,request):
return render(request,'register.html')
def post(self, request):
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
try:
users.objects.create(user=user1,pwd=pwd1)
except Exception as e:
print(e)
return HttpResponse('账号密码注册失败')
return redirect('/login/')
class LoginView(View):
def get(self,request):
return render(request,'login.html')
def post(self,request):
user1 = request.POST.get('user')
pwd1 = request.POST.get('pwd')
try:
user_data = users.objects.get(user=user1)
except Exception as e:
print(e)
return HttpResponse("账号密码不存在")
if pwd1 == user_data.pwd:
return redirect('/index/')
else:
return HttpResponse("密码错误")
class IndexView(View):
def get(self,request):
return render(request,'index.html')
class IndexView2(View):
def get(self,request,id):
return HttpResponse(f"匹配到的id为:{id}")
class IndexView3(View):
def get(self,request,x,y):
return HttpResponse(f"x为:{x},y为:{y}")
5.路由太多了需要创建一个urls.py存放
// from django.contrib import admin
from django.urls import path,re_path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('register/',views.RegisterView.as_view()),
path('login/', views.LoginView.as_view()),
path('zhuyemian/', views.ZhuyemianView.as_view()),
re_path(r'^[a-z]{5}/$', views.ZhuyemianView.as_view()),
path('index2//',views.IndexView2.as_view())
]
6.案例总结
第三单元知识点:
1.GET请求处理 和 POST请求处理
2.几种响应。基础响应HttpResponse、响应一个页面render、重定向redirect
3.类视图CBV
第四单元知识点:
1.动态路由
2.路由分发
案例:
实现登录注册功能。
注册:用户输入账号密码以后提交到服务器,服务器将账号密码保存到数据库中,然后重定向到登录页面。
登录:用户输入账号密码,服务器判断账号密码是否存在,如果存在的话登录成功转跳到主页面。
分析
需要3个页面、需要3个类视图(5个视图方法)。
注册类视图:
get视图方法:获取注册页面。
post视图方法:提交注册的账号密码,并且转跳到到登录页面。
登录类视图:
get视图方法:获取登录页面。
post视图方法:提交登录的账号密码,并且转跳到到主页面。
主页面类视图:
get视图方法:获取主页面。
- 重定向概念及redirect
// frm django.shortcuts import redirect
redirect(to, permanent=False)
'''
to # 可以是一个 django 项目中视图函数的路由映射,也可以是一个 reverse 的反向路由解析
permanent # 如果设置为 True,将返回 301 状态码,代表永久重定向
'''
302:临时重定向,旧地址资源临时不能用了,搜索引擎只会暂时抓取新地址的内容而保存旧的地址。
301:永久重定向,旧地址资源已经不复存在,搜索引擎不光会抓取新地址的内容,还会替换旧地址为新地址
8.动态路由
有的时候,我们的路由设置不能一直维持一个一成不变的状态;
比如遇到一些内容翻页的场景,那么我们的连接可能是:
xx.com/airticle_list/1/ 、
xx.com/airticle_list/2/`
那么这样的路由其实对应的都应该是一个视图函数,用以展示页面内容,那么如何设计这样的路由,就要涉及到动态路由及路由传参
// def index(request,x,y):
content = "x:%s\ny:%s" % (x,y)
return HttpResponse(content)
9.动态路由转换器
//from django.urls import path,re_path
from urlapp import views
urlpatterns = [
path('//',views.index),
path("//",views.index),
re_path(r"^(?P\d+)/(?P[a-zA-Z]+)/$"),
re_path(r"^(\d+)/([a-zA-Z]+)/$"),
]
Original: https://blog.csdn.net/weixin_64866697/article/details/124415475
Author: დ᭄ꦿ阿楊꧔ꦿ℘⸙451
Title: 第三天博客
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/733933/
转载文章受原作者版权保护。转载请注明原作者出处!