常用的函数方法与包的调用

# 登陆视图函数
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 #放行

最新文章

  1. Tomcat配置内存和远程debug端口
  2. sass sourcemap详细使用
  3. html 关于块级元素和行内元素
  4. leetcode:Unique Binary Search Trees
  5. xxx_cast类型转换
  6. [Sciter系列] MFC下的Sciter–1.创建工程框架
  7. Hive基础介绍
  8. MySQL的多实例
  9. POJ1330Nearest Common Ancestors——近期公共祖先(离线Tarjan)
  10. HTML select 操作
  11. service redis does not support chkconfig的解决办法
  12. POST 方式上传图片
  13. ExtJS002Window创建
  14. 简单字符串处理 hdu2532 Engine
  15. Android中贝塞尔曲线的绘制方法
  16. R读取excel文件乱码 read.xlsx() 解决方法
  17. 用KMP算法实现strStr()
  18. HDU 1248 寒冰王座(完全背包裸题)
  19. SAP MM 标准采购组织的分配对于寄售采购订单收货的影响
  20. 关于js作用域问题

热门文章

  1. idea中copyright使用
  2. 123457123456#0#----com.ppGame.HappyShuXue54--前拼后广--儿童数学_pp
  3. django项目mysite
  4. Siamese Net
  5. 单独配置的nginx mysql 重启
  6. ECMAScript 6复习<一>
  7. 静态站点生成器-md-mkdocs
  8. LODOP统计table自动分页后的每页的某列合计值
  9. web端自动化——Selenium Server环境配置
  10. 【GStreamer开发】GStreamer基础教程11——调试工具