03 .29Django注册、 验证、登录
2018-03-30 15:22
375 查看
package是一个包,有init文件
directory文件夹就没有
从页面到views配置路径,页面请求,views返回给页面数据。
views到页面有没有配路径
settings里面根路径blog1.urls-->输入blog.urls-->输入regist路径和调用views方法-->views 页面:/blog/regist 包含关系
views功能:读取数据库,页面跳转
页面返回参数:
后生成的APP在settings里自己添加
pycharm命令窗口打开:Ctrl+alt+R
1.makemigrations blog 生成0001文件
2.sqlmigrate bloguser 0001 使用这个生成sql语句
3.migrate blog 0001 执行到数据库,有表
页面先访问后台,在访问页面,直接访问页面不行
转发:1.刷新浏览器重新提交表单 2、只能在项目内部跳转 3、地址没变,带参数过去,重写。
重定向:把返回的数据拿出来,重新做成新方法。刷新页面,一次以上的请求和响应,请求地址发生一次以上的变化。
1.根路径
path('blog/',include('blog.urls',namespace='user'))
数据库用户名不能重复:
在models.py设置unique=True在创建表 或者直接在数据库改
再重新修改表,先将重复数据删掉
在输入重复的,save报异常,系统崩溃,添加try捕获异常
这样晚了,点注册才报重复异常。
用ajax捕获重复异常:用jQuery实现,简单,用JavaScript也可以实现,麻烦
使用js文件,放在静态文件里。template里,是外面,所有app都能用,放blog2里,别的不能用。有mini版全是英文jQuery.min.js
创建文件夹static,不是package包,他会生成init文件。
在settings配置静态文件和路径:
用ajax 把jQuery拿进来
AJAX传输数据格式有三种:HTML、json、xml
有$.ajax、$.post、$.get三种方式。
网站和后台交互基本都是ajax,很少用表单了。
在后台创建hasname函数:
登录:
directory文件夹就没有
从页面到views配置路径,页面请求,views返回给页面数据。
views到页面有没有配路径
settings里面根路径blog1.urls-->输入blog.urls-->输入regist路径和调用views方法-->views 页面:/blog/regist 包含关系
views功能:读取数据库,页面跳转
页面返回参数:
views: return render(request,'regist.html',{'mess':'用户名存在'})
返回页面:{{mess}} #django自带模板
后生成的APP在settings里自己添加
pycharm命令窗口打开:Ctrl+alt+R
1.makemigrations blog 生成0001文件
2.sqlmigrate bloguser 0001 使用这个生成sql语句
3.migrate blog 0001 执行到数据库,有表
页面先访问后台,在访问页面,直接访问页面不行
转发:1.刷新浏览器重新提交表单 2、只能在项目内部跳转 3、地址没变,带参数过去,重写。
重定向:把返回的数据拿出来,重新做成新方法。刷新页面,一次以上的请求和响应,请求地址发生一次以上的变化。
1.根路径
path('blog/',include('blog.urls',namespace='user'))
2.
app_name='user' urlpatterns = [ path('show/<int:id>',views.show,name='blogShow'), ]
3.
def show(request,id): bloguser=BlogUser.objects.get(pk=id) return render(request,'suc.html',{'bloguser':bloguser})
def regist(request): if request.method=='GET': return render(request,'regist.html') else: uname=request.POST.get('username') pwd=request.POST.get('pwd') bloguser=BlogUser() bloguser.userName=uname bloguser.pwd=pwd try: bloguser.save() print('save ok...') return redirect(reverse('user:blogShow', args=[bloguser.id]))#重定向 except: return render(request,'regist.html',{'mess':'用户名存在'})
数据库用户名不能重复:
在models.py设置unique=True在创建表 或者直接在数据库改
再重新修改表,先将重复数据删掉
在输入重复的,save报异常,系统崩溃,添加try捕获异常
def regist(requset): if requset.method=='GET': return render(requset,'regist.html') else: uname=requset.POST.get('username') pwd=requset.POST.get('pwd') bloguser=BlogUser() bloguser.userName=uname bloguser.pwd=pwd try: bloguser.save() print(1) return redirect(reverse('heihei:haha',args=[bloguser.id])) # app_name:name 路径:heihei下的haha 不是页面,可以跳转页面,但是不好带参数,写一个新方法, # args是传参数, 将参数传过去 except: return render(requset,'regist.html',{'mess2':'用户名有了亲!'})
这样晚了,点注册才报重复异常。
用ajax捕获重复异常:用jQuery实现,简单,用JavaScript也可以实现,麻烦
使用js文件,放在静态文件里。template里,是外面,所有app都能用,放blog2里,别的不能用。有mini版全是英文jQuery.min.js
创建文件夹static,不是package包,他会生成init文件。
在settings配置静态文件和路径:
STATICFILES_DIRS=[#这是目录,路径和目录建立映射关系,如果路径和目录是一样名字,容易看出来你的目录结构 os.path.join(BASE_DIR, 'static') ] STATIC_URL='/static/'#路径
STATIC_URL='/static/' #前面有杠就是根路径,没杠是当前路径
http://127.0.0.1:8000/ 是根路径
用ajax 把jQuery拿进来
AJAX传输数据格式有三种:HTML、json、xml
有$.ajax、$.post、$.get三种方式。
网站和后台交互基本都是ajax,很少用表单了。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册</title> <script type="text/javascript" src="/static/js/jquery-1.11.1%20.js"></script>{% comment %}#放入jquery文件{% endcomment %} <script type="text/javascript"> $(function () {{% comment %}ajax异步请求,实现鼠标移开的效果{% endcomment %} $('#username'){% comment %}或者'input[name="username"]'{% endcomment %}.blur(function () {{% comment %}光标划过用户名{% endcomment %} //失去光标获取用户名 var uname=$(this).val();{% comment %}获取用户名的值{% endcomment %} var csrftoken=$("input[name='csrfmiddlewaretoken']").val(){% comment %}#获取token的值{% endcomment %} $.ajax({//用ajax或post实现都可以,因为有了光标移开,所以添加js,用ajax简单 url: '/blog2/hasname',//路径到后台 type: 'post',//请求方式 data: {'uname': uname,'csrfmiddlewaretoken':csrftoken},{% comment %}用的是json格式,将获取的用户名和token通过ajax以键值对形式将键和值传给后台{% endcomment %} success:function (result) { //alert(result) $('#mess').html(result){% comment %}把ajax请求回来的值放在html里{% endcomment %} } }) }) }) </script> </head> <body> <form method="post"> {% csrf_token %}{% comment %}也可以在这加onblur{% endcomment %} 用户名:<input type="text" name="username" id="username"><span id="mess">{{ mess2 }}</span><br> 密码: <input type="password" name="pwd"><br> <input type="submit" value="注册"> </form> </body> </html>
在后台创建hasname函数:
from django.views.decorators.csrf import csrf_protect#导入csrf @csrf_protect def hasname(request): username=request.POST.get('uname')#后台接受ajax发送过来的用户名 bloguser=BlogUser.objects.filter(userName=username)#返回的是set集合,所以都不是none,筛选数据库用户名和输入用户名相同的,返回一个对象集合 if len(bloguser)>0:#用长度 return HttpResponse('<font color="red">用户名有啦!<font>')#返回结果 else: return HttpResponse('<font color="blue">可用</font>')
登录:
相关文章推荐
- django 注册、登录及第三方接口程序(3):验证之正则表达式
- python django 用户注册验证登录。。。
- Django学习笔记4 用户注册和身份验证、登录、注销、注册
- Django笔记---用户注册和登录验证(1)--Post请求
- Django笔记---用户注册和登录验证(2)--数据库储存
- django 注册、登录及第三方接口程序(1):基础知识
- Asp.net2.0身份验证技术学习入门---新用户注册,登录,显示用户信息
- django 自定义登录验证逻辑
- Django用户登录与注册——小白教程
- django的用户注册登录界面设置
- React + nodemailer + koa-jwt 实现登录注册邮箱验证
- django的登录注册系统的示例代码
- 用户登录注册页面jQuery验证
- 一个简单的注册登录页面(包括阿里大于的手机验证)html+JS+AJAX+PHP
- django博客注册登录项目1
- 原生js验证简洁注册登录页面
- 03-22 Ajax验证用户登录
- 表单验证(登录/注册)
- cakephp会员注册及登录验证实例
- Laravel 5.1 集成 Auth 验证用户注册登录示例