django学习笔记03-Django视图

介绍视图之前,先给大家介绍一下django的MTV开发模式

M代表模型(Model),即数据存取层。该层处理的数据相关的所有事物,进行数据库相关的操作

T代表模板(Template),即表现层。该层处理与页面显示有关的东西,主要用于与用户进行交互

V代表视图(Views),即业务逻辑层。该层包含存取模型及调取模板相关操作,是模型和模板之间的桥梁

1.post请求时,解决防止跨站请求伪造导致请求无法提交的问题。

只需要在提交的表单中添加{% csrf_token %},提交时会生成令牌,通过跨站请求伪造的验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>发布会管理</h1>
<form method="post" action="/login_action/">
    <!--placeholder输入框默认值-->
    <input type="text" name="username" placeholder="username"><br>
    <input type="password" name="password" placeholder="password"><br>
    {{ error }}<br>
    <button id="btn" type="submit">登录</button>
    {% csrf_token %}
</form>
</body>
</html>

2.常见http返回的区别

1)render:将第三个参数加载进templates中定义的文件中,并通过浏览器进行加载

视图层代码

#传入三个参数,request请求对象,index.html访问的前端文件。{'error':'username or password error'}定义前端的错误信息
return render(request,"index.html",{'error':'username or password error'})

模板层代码

#调用请求传回来的错误信息
{{ error }}

2)HttpResponse:以字符串形式传递给客户端

return HttpResponse("login sussess")

3)HttpResponseRedirect:对页面进行重定向

#将页面重定向至event_manage路径下
HttpResponseRedirect("/event_manage/")

3.认证登录

1)django自带了认证系统,在命令行输入如下命令,创建管理员用户

python manage.py createsuperuser

2)在浏览器输入http://127.0.0.1:8000/admin,用刚才创建的用户登录登录admin后台

3)引入django的认证登录

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required

# Create your views here.

#登录
def login_action(request):
    if request.method == "POST":
        username = request.POST.get('username','')
        password = request.POST.get('password','')
        #用于认证给出的用户名及密码,它接收两个参数username,password,如果正确返回user对象,如果错误返回none
        user = auth.authenticate(username=username,password=password)
        if user:
            #login()方法接收httprequest对象和一个user对象
            auth.login(request, user)
            request.session["user"] = username
            response = HttpResponseRedirect("/event_manage/")
            # return HttpResponse("login sussess")
            return response
        else:
            return render(request,"index.html",{'error':'username or password error'})

4)访问其他页面时,需要用户登录才能访问,只需要使用login_required进行装饰即可

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required

# Create your views here.

#发布会管理
@login_required()#定义该路径需要登录后才能访问
def event_manage(request):
    return render(request,"event_manage.html")

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值