django域名反向解析、类视图、利用创建类的方式对默认表格进行修改、检查邮箱是否被注册、更改密码界面

域名反向解析:当路径发生改变后固定路径需要改变,通过反向解析可以自动寻找并修改

huasheng/urls.py下 添加namespace
url(r'^user/',include('user.urls',namespace='user')),
各应用urls.py下 添加name
url(r'^$', views.index,name='index'),
html模板中
<form action="{% url 'user:register' %}" method="POST">user找姓register找名

视图函数和类视图

views.py下
from django.shortcuts import render,redirect	#redirect重定向
from django.core.urlresolvers import reverse	#导入反向解析函数
from django.http import HttpResponse
from .models import User
from django.views.generic import View		#导入View类
class RegisterView(View):
    def get(self,request):			#当method为get时执行
        return render(request, 'register.html')
def post(self,request):			#当method是post时执行
    user_name = request.POST.get('user_name')
    pwd = request.POST.get('pwd')
    email = request.POST.get('email')
    allow = request.POST.get('allow')
    print(allow)
    # 校验数据是否为空
    if not all([user_name, pwd, email, allow]):
        return HttpResponse('数据有为空的情况')
    # 校验数据格式的情况
    user = User.objects.create_user(username=user_name, email=email, password=pwd)
    # username, email = None, password = None, ** extra_fields
    user.is_active = 0			#将is_active属性改为0并保存
    user.save()

    return redirect(reverse('carlist:index'))	#重定向到首页

urls.py下更改
url(r'register/',views.RegisterView.as_view(),name='register')	#跳转到views.RegisterView.as_view()判断method

利用创建类的方式对默认表格进行修改

apps文件夹下创建db文件夹下base_model.py
from django.db import  models

class BaseModel(models.Model):
    is_delete = models.BooleanField(default=False,verbose_name='是否删除')	#添加is_delete
    create_time = models.DateTimeField(auto_now_add=True,verbose_name='创建时间')	#添加create_time

    class Meta:
        abstract = True
    #注册类

应用下models.py中

from db.base_model import BaseModel
from django.contrib.auth.models import AbstractUser

class User(AbstractUser,BaseModel):		#让User类继承BaseModel类将新属性添加进默认表结构中
    pass
###***注意迁移出错删库时不要忘记删除对应migrations文件

检查邮箱是否被注册

reemail = User.objects.filter(email=email)
if len(reemail)!=0:
            return HttpResponse('邮箱已被注册')

更改密码界面
写好对应html,配置好url
veiw.py中添加新类ChangePwd

 class ChangePwd(View):

    def get(self,request):
        return render(request, 'changepwd.html')

    def post(self,request):
        user_name = request.POST.get('user_name')
        pwd = request.POST.get('pwd')
        new_pwd = request.POST.get('new_pwd')
        new_cpwd = request.POST.get('new_cpwd')
        # print(allow)
        # 校验数据是否为空
        print(user_name)
        print(pwd)
        print(new_pwd)
        print(new_cpwd)
        if not all([user_name, pwd, new_pwd, new_cpwd]):
            return HttpResponse('数据有为空的情况')
        try:
            user = User.objects.get(username = user_name)
        except Exception:
            return HttpResponse('账号不存在')


        if new_pwd!=new_cpwd:
            return HttpResponse('两次密码输入不一致')
        if not user.check_password(pwd):
            print(user)
            return HttpResponse('密码错误')
        # 校验数据格式的情况
        user.set_password(new_pwd)
        user.save()
        # username, email = None, password = None, ** extra_fields

        return redirect(reverse('carlist:index'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值