第三天博客

1.django命令

创建django项目: django-admin startproject 项目名

创建子应用: python .\manage.py startapp 子应用名
生成迁移文件:python manage.py makemigrations

执行前移:python manage.py migrate
启动项目 python manage.py runserver
2.思考路线图
在这里插入图片描述
在这里插入图片描述
3.报错问题
在这里插入图片描述
原因: 没看清,没仔细看
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决:
在这里插入图片描述
在这里插入图片描述

  1. 登录注册
// from django.shortcuts import render,redirect

# Create your views here.
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')
        #查看数据库中是否存在账号为user1的数据
        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/<int:id>/',views.IndexView2.as_view())
]

6.案例总结

第三单元知识点:

1.GET请求处理 和 POST请求处理

2.几种响应。基础响应HttpResponse、响应一个页面render、重定向redirect

3.类视图CBV

第四单元知识点:

1.动态路由

2.路由分发

案例:

实现登录注册功能。

注册:用户输入账号密码以后提交到服务器,服务器将账号密码保存到数据库中,然后重定向到登录页面。

登录:用户输入账号密码,服务器判断账号密码是否存在,如果存在的话登录成功转跳到主页面。

分析

需要3个页面、需要3个类视图(5个视图方法)。

注册类视图:

​ get视图方法:获取注册页面。

​ post视图方法:提交注册的账号密码,并且转跳到到登录页面。

登录类视图:

​ get视图方法:获取登录页面。

​ post视图方法:提交登录的账号密码,并且转跳到到主页面。

主页面类视图:

​ get视图方法:获取主页面。

7. 重定向概念及redirect

// frm django.shortcuts import redirect 
redirect(to, permanent=False)
# 一个重定向,浏览器通过该状态码自动跳转到一个新的路由地址,默认返回响应状态码 302
'''
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('<int:x>/<str:y>/',views.index), # 指明类型
    path("<x>/<y>/",views.index), # 不指明类型
    re_path(r"^(?P<x>\d+)/(?P<y>[a-zA-Z]+)/$"), # (?P<name>pattern) 正则分组
    re_path(r"^(\d+)/([a-zA-Z]+)/$"),
]

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值