urls

urlpatterns = [    url(r'^admin/', admin.site.urls),

#     登录界面url(r'^login/$', views.login,name='login'),

#     注册界面url(r'^reg/$', views.reg,name='reg'),]

forms

from django import forms
# 注册 formclass RegForm(forms.ModelForm):
    username= forms.EmailField(label='用户名',                             error_messages={'required':'邮箱不能为空', 'invalid':'邮箱格式错误'},                             )    password = forms.CharField(        label='密码',        min_length=8,        strip=True,        widget=forms.widgets.PasswordInput(),        validators=[RegexValidator(r'^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$', '输入8-16位密码数字与字母')],        error_messages={            'min_length': '用户名不小于8',            'required': '不能为空'        }    )    re_password = forms.CharField(        label='确认密码',        min_length=8,        strip=True,        widget=forms.widgets.PasswordInput(),        validators=[RegexValidator(r'^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$', '输入8-16位密码数字与字母')],        error_messages={

            'required': '不能为空'        }    )    name = forms.CharField(        label='姓名',        strip=True,        validators=[check_name],        error_messages={

            'required': '不能为空'        }

    )    # 配置文件  用class Meta    class Meta:        # 继承表格        model=models.UserProfile        # 字段顺序  1.fields = '__all__'  所有字段 2.  exclude = [''] 除了列表里的        fields=['username','password', 're_password', 'name', 'department']  # 指定的字段        # 设置字段名        labels={'username':'用户名','department': '部门'}  
# 全局钩子判断2次密码一直不   用户存在没def clean(self):    pwd=self.cleaned_data.get('password')    re_pwd=self.cleaned_data.get('re_password')    username=self.cleaned_data.get('username')    user_model = list(models.UserProfile.objects.all().values_list('username'))    for i in user_model:        if username in i:            self.add_error('username', '用户名已存在')            raise ValidationError('用户名已存在')    if pwd == re_pwd:        return self.cleaned_data    self.add_error('re_pwd','两次密码不一致')    raise ValidationError('两次密码不一致')

views

from crm.forms import RegFormfrom django.contrib import auth
# 注册界面def reg(request):    form_obj=RegForm()    if request.method=='POST':        form_obj = RegForm(request.POST)        if form_obj.is_valid():            # 获取注册信息方法一            # form_obj.cleaned_data.pop('re_password')            # UserProfile.objects.create_user(**form_obj.cleaned_data)

            # 获取注册信息方法二            obj=form_obj.save()            obj.set_password(obj.password)            obj.save()            return redirect('/crm/login/')    return render(request,'reg.html',{'a':form_obj})

#登录
def login(request):    err_msg = ''    if request.method == 'POST':        username = request.POST.get('username')        password = request.POST.get('password')        obj = auth.authenticate(request, username=username, password=password)        if obj:            return redirect('/index/')        err_msg = '用户名或密码错误'        return render(request, 'login.html', {'err_msg': err_msg})

html

<h1>注册</h1>
<form class="form-horizontal" action=""  method="post" novalidate>    {% csrf_token %}    <div class="form-group {% if a.username.errors %}has-error {% endif %}">        <label for="{{ a.username.id_for_label }}" class="col-sm-5 control-label">{{ a.username.label }}</label>        <div class="col-sm-3">{{ a.username}}            <span id="helpBlock2" class="help-block">{{ a.username.errors.0}}</span>        </div>    </div>

 <div class="form-group {% if a.password.errors %}has-error {% endif %}">        <label for="{{ a.password.id_for_label }}" class="col-sm-5 control-label">{{ a.password.label }}</label>        <div class="col-sm-3">{{ a.password }}            <span id="helpBlock2" class="help-block">{{ a.password.errors.0}}</span>        </div>    </div>

 <div class="form-group {% if a.re_password.errors %}has-error {% endif %}">        <label for="{{ a.re_password.id_for_label }}" class="col-sm-5 control-label">{{ a.re_password.label }}</label>        <div class="col-sm-3">{{ a.re_password }}            <span id="helpBlock2" class="help-block">{{ a.re_password.errors.0}}</span>        </div>    </div>
    <div class="col-sm-offset-5 col-sm-3">      <button type="submit" class="btn btn-primary btn-block ">提交</button>    </div>  </div>

</form>

<h1>登录</h1>
<form action="" method="post">    {% csrf_token %}    <div class="login-top">    登录</div><div class="login-center clearfix">    <div class="login-center-img"><img src="{% static 'imgs/name.png' %}"></div>    <div class="login-center-input">        <input type="text" name="username" value="admin" placeholder="请输入您的用户名" onfocus="this.placeholder=''"               onblur="this.placeholder='请输入您的用户名'">        <div class="login-center-input-text">用户名</div>    </div></div>

     <div class="login-center clearfix">    <div class="login-center-img"><img src="{% static 'imgs/password.png' %}"></div>    <div class="login-center-input">        <input type="password" name="password" value="" placeholder="请输入您的密码" onfocus="this.placeholder=''"               onblur="this.placeholder='请输入您的密码'">        <div class="login-center-input-text">密码</div>    </div></div>
<div style="text-align: center">    <button class="login-button">登录</button></div></form>

   
												

基于form表单 写登陆注册的更多相关文章

  1. django 基于form表单上传文件和基于ajax上传文件

    一.基于form表单上传文件 1.html里是有一个input type="file" 和 ‘submit’的标签 2.vies.py def fileupload(request ...

  2. Django框架form表单配合ajax注册

    总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 下面是写的登录页面的实例 1:views视图中的代码 # 注册页面 def regi ...

  3. 基于form表单submit提交不跳转

    方法一:target <html> <body> <form action="" method="post" target=&qu ...

  4. 基于Spring MVC实现基于form表单上传Excel文件,批量导入数据

    在pom.xml中引入: <!--处理2003 excel--> <dependency> <groupId>org.apache.poi</groupId& ...

  5. 基于form表单的极验滑动验证小案例

    01.目录展示 02.url.py urlpatterns = [ path('admin/', admin.site.urls), path('login/',views.login), path( ...

  6. Laravel使用artisan快速实现表单的登陆注册

    1. 开发环境 macOS Mojave 10.14.6 XAMPP 5.6.38 Laravel 5.2 2. 在终端,先进入到项目根目录并执行执行命令 php artisan make:auth ...

  7. 基于Spring3 MVC实现基于form表单文件上传

    http://blog.csdn.net/jia20003/article/details/8474374/

  8. python自动化开发-[第二十天]-form表单,CBV和FBV,序列化

    1.CBV和FBV的用法 2.序列化用法 3.form表单 一.CBV和FBV 1.cbv是 class based view(基于类),fbv是function based view(基于函数) 2 ...

  9. 前端-form表单与CSS

    目录 form表单 表单属性 label标签 input标签 select 下拉框标签 textarea多行文本 提交 Flask 结合form表单 初探 CSS介绍以及基本选择器 基本选择器 组合选 ...

随机推荐

  1. day12_python_1124

    00 如何学习python 如何学好英语? 母系英语. 听 说 读 写 练 input output 听 说 读 写(练) 听,读 说 纠正 01 昨日内容回顾 生成器:本质就是迭代器,自己用pyth ...

  2. [Codeforces477D]Dreamoon and Binary

    Problem 给定一个字符串数的二进制表示(不含前导0)s(长度不超过5000), 对于一个数n(初值为0),可以进行以下两种操作: 1.将n的二进制表示(无前导0)写到已经写的串的后面. 2.n加 ...

  3. 为你详解Linux安装GCC方法

    下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/查 ...

  4. Mysql 编译安装脚本

    cat mysql_init.sh##安装mariadb依赖包function install_yum(){  yum -y install $1}i="ncurses* bison gcc ...

  5. JavaScript 设计模式的七大原则(未完成)

    设计模式(面向对象)有七大设计原则,分别是: 开闭原则:对扩展开放,对修改关闭 单一职责原则:每一个类应该专注于做一件事情 里氏替换原则:父类存在的地方,子类是可以替换的 依赖倒转原则:实现尽量依赖抽 ...

  6. jmeter解决request response中文乱码问题

    一:主要内容 解决request请求入参中文乱码问题 解决response响应数据中文乱码问题 二:解决request和response中文乱码问题 request结果:-中文已经不乱码了 respo ...

  7. VBS下载者助以一臂之力

    当拿到shell到手,服务器是内网,你又没有条件映射,服务器又穿不上东西 是不是很郁闷,还有我们还有vbs,能执行cmd命令就有希望 一.VBS下载者: 复制代码 代码如下: Set Post = C ...

  8. 解决启动vs2010 未能找到自动配置的设置文件

    今天室友把固态拆掉,重新安上.打开vs2010出现 打开项目,出现 找了许多方法都无效. 发现c:user\Administer\documents\下,vs2010 .vs webset 那些文件点 ...

  9. 关于CMD的一些小技巧

    1.cd命令无法切换路径怎么办? a)切换盘符不好使

  10. spring集成jedis简单实例

    jedis是redis的java客户端,spring将redis连接池作为一个bean配置. redis连接池分为两种,一种是“redis.clients.jedis.ShardedJedisPool ...