Django之小结
常用的函数方法与包的调用
# 登陆视图函数
def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
user = request.POST.get('user')
pwd = request.POST.get('pwd')
validcode = request.POST.get('validcode') response = {'user':None,'err_msg':''}
if validcode.upper() == requeset.session['keep_str'].upper():
user_obj = auth.authenticate(username=user,password=pwd)
if user_obj:
auth.login(request,user_obj)
response['user']=user
else:
response['err_msg']='用户名或密码错误'
else:
response['err_msg']='验证码错误'
from django.http import JsonResponse(response) # 注册视图函数
def register(request):
if request.is_ajax():
res = {'user':None,'err_msg':''}
form = UserForm(request.POST)
if form.is_valid():
res['user']=form.cleaned_data.get('user')
user = form.cleaned_data.get('user')
pwd = form.cleaned_data.get('pwd')
email = form.cleaned_data.get('email') user = UserInfo.objects.create_user(username=user,password=pwd,email=email) else:
res['err_msg']=form.error
return JsonResponse(res) else:
form =UserForm()
return render(request,'register.html',local())
# 注销
def logout(request):
auth.logout(request)
return redirect('/login/')
# 修改密码
def setpwd(request):
if request.method =='GET':
return render(request,'setpwd.html')
else:
response={'user':None,'err_msg':''}
pwd = request.POST.get('pwd')
rpwd = request.POST.get('rpwd')
if pwd ==rpwd:
user = UserInfo.objects.get(username=request.user.username)
user.set_password(raw_password=pwd)
user.save()
response['user']=200
else:
response['err_msg']='两次输入不一致'
return JsonResponse(response) # 主页
def index(request):
return render(request,'index.html') # django组件路径
shortcuts:捷径 from django.shortcuts import render,HttpResponse,redriect
http:传输 from django.http import JsonResponse
contrib:附件 from django.contrib import auth
urls:路径 from django.urls import reverse
models:模型 from django.models import Q # 登陆装饰器
auth组件提供的装饰器
导入方法: from django.auth.decorators import login_required
此外还需要在setting中设置 认证路径 LOGIN_ULR='/longin/' # 静态文件
1.创建静态文件包 static
2.在setting中设置 static路径
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
] # 替换auth中的User表
1.导入 from django.contrib.auth.models import AbstractUser
2.在模型类中创建UserInfo表继承AbstractUser
3.在setting中设置路径 AUTH_USER_MODEL='' # cbv
导入View
from django.views import View
class CustomerView(View):
def get(self,request):
if reverse('customers_list') == request.path
label='公户列表'
customer_list = Customer.objects.filter(consultant__innull=Ture)
else:
label='我的客户'
customer_list = Customer.objects.filter(consultant=request.user) # search
val = request.GET.get('q')
field = request.GET.get('field')
if val:
q = Q()
q.chidren.append((field + '__contains',val))
customer_list = customer_list.filter(q) # 添加与编辑
基于cbv
1.创建视图类
2.编写get与post方法
from django.views import View
class AddEditConsultRecordView(View):
def get(self,request,edit_id=None):
edit_obj = ConsultRecord.objects.filter(pk=edit_id).first()
form = ConsultRecordModelForm(request,instance=edit_obj)
return render(request, "add_edit_consultrecord.html", {"form": form,"edit_obj":edit_obj}) def post(self,request,edit_id=None):
edit_obj = ConsultRecord.objects.filter(pk=edit_id).first()
form=ConsultRecordModelForm(request.POST,instance=edit_obj)
if form.is_valid():
form.save()
return redirect(reverse("consult_records"))
else:
return render(request, "add_edit_consultrecord.html", {"form": form,"edit_obj":edit_obj}) # 权限相关
1.创建表关系,建立权限关系表
2.编写视图函数与中间件
视图函数:
1.获取用户信息
2.验证信息,成功设置session(request.session['user_id']=user.pk),
3.查询表中用户拥有的权限 permissions = Role.objects.filter(user=user).values('permissions__url').distinct() #去重
4.遍历permissions保存列表格式,保存到session中 requeset.session['premissios_list']=premissios_list
中间件:
1.获取到访问路径
2.设置白名单的同时需要注意admin
3.校验是否登陆过,判断session中有没有值,如果没有返回 登陆路径
4.校验权限,判断session中有没有对应的权限
for reg in premissions_list:
reg='^%s$' %reg
rul = re.search(reg,current_path)
if rul:
return Nnoe #放行
Django之小结的更多相关文章
- django常见问题小结,细节容易忽视
中文URL:这个其实是很常识的东西,但是之前做web一直没注意过,在使用HttpResponseRedirect的时候,如果Redirect的URL中带中文的话,会报UnicodeEncodeErro ...
- django 单元测试小结
测试的场景 框架Django1.8 测试工具 unittest, 要记得给test设置一个独特的settings. 测试请求 也就是测试整个view部分 官方案例 其中可能会遇到登录,或者时sessi ...
- django 知识点小结
以下内容为用django写blog中的一些知识点,权当复习. 一.定义view 1.get_object_or_404()是用get()查询数据,如果不存在就直接返回404 参数: get_objec ...
- django 编程小结
1.增删改查 add obj = Obj(atr=atr..) obj.save() update: __dict__ 遍历 del: 根据id列表删除 query: 首次查询: 直接跳转至页面,前端 ...
- django使用小结
一.静态文件的使用 二.csrf跨站访问安全机制设置 三.MODEL模型使用
- django单元测试
django 单元测试小结 django 测试 从前很少写单元测试了,特别是web应用.最近不知不觉喜欢起来这个事情了,发现单元测试对于软件的模块,正交性有很大促进作用,因为函数,模块写的不合 ...
- Python框架之Django学习笔记(五)
第一个Django网页小结 进来的请求转入/hello/. Django通过在ROOT_URLCONF配置来决定根URLconf. Django在URLconf中的所有URL模式中,查找第一个匹配/h ...
- Django学习系列5:为视图编写单元测试
打开lists/tests.py编写 """向浏览器返回真正的HTML响应,添加一个新的测试方法""" from django.test i ...
- Django rest framework之序列化小结
最近在DRF的序列化上踩过了不少坑,特此结合官方文档记录下,方便日后查阅. [01]前言 serializers是什么?官网是这样的”Serializers allow complex d ...
随机推荐
- LeetCode_235. Lowest Common Ancestor of a Binary Search Tree
235. Lowest Common Ancestor of a Binary Search Tree Easy Given a binary search tree (BST), find the ...
- 细聊Oracle通过ODBC数据源连接SQL Server数据库
类似文章搜索引擎上有很多,内容大致相同,今天所谓细聊是因为我在借鉴这些文章时候走了些弯路,所以写此文,为自己备忘,同时如果能为初涉此处知识点的小伙伴提供些帮助就更好了,文章结尾处的一些扩展有一定实战意 ...
- MSP430FR6972驱动模块模组调试
1. 说是会进入晶振的中断 #pragma vector=UNMI_VECTOR 2. 打了断点没进入,猜测是串口被世龙修改后,串口波特率不对,重新改回原来的,AT+NATSPEED?一直发送这个命令 ...
- Pyhon时间参数的应用
Python获取 本周,上周,本月,上月,本季,上季,今年, 去年 # -*- coding: utf-8 -*-# @time: 2019-05-13 17:30 import datetime f ...
- 【计算机视觉】SeetaFace Engine开源C++人脸识别引擎
SeetaFace Engine是一个开源的C++人脸识别引擎,它可以在不依赖第三方的条件下载CPU上运行.他包含三个关键部分,即:SeetaFace Detection,SeetaFace Alig ...
- 【GStreamer开发】GStreamer播放教程09——数字音频传输
目标 本教程展示GStreamer是如何进行数字音频传输的. 介绍 在常见的模拟格式外,高端的音频系统通常都接受数字格式,压缩的非压缩的都能接受.因为音频信号是从电脑传到音箱,用一种更有弹性的形态会更 ...
- SSH 连接时间超时
linux服务端 # vi /etc/ssh/sshd_config ClientAliveInterval 60 ClientAliveCountMax 3 # 注: # ClientAliveIn ...
- json数据的key的读取和替换
读取json的key: /** * @Description: 递归读取所有的key * @Param: * @return: * @throws Exception * @author: hw * ...
- webpack package code into different bundle
Demo4操作手册 本Demo演示如何进行分块打包等较高级的使用 准备环境 初始化环境, cd到demo1目录之后, 执行如下命令: npm init -y npm install webpack w ...
- [转帖]重估BAT与华为的云上野心
重估BAT与华为的云上野心 https://www.leiphone.com/news/201910/Z5aLhckqUjCNJ49o.html 本文作者:王刚 2019-10-11 16:19 导语 ...