6Django-跑通用户登录
一后端:
1创建应用:
会话保持需要后端创建一个令牌给前端,下次前端再请求访问时带上没有过期的令牌即可,因此我们单拎出来一个应用专门处理会话保持
D:\PycharmProjects\linuxTangblog>python manage.py startapp dtoken
2注册应用:
INSTALLED_APPS = [ 'dtoken', ]
3编写dtoken的视图函数:
import hashlib import json from django.http import JsonResponse from user.models import UserProfile # Create your views here. #因功能单一只有post所以就用函数写了 def tokens(request): if request.method != 'POST': result = {'code':201, 'error':'请求方式并非post'} return JsonResponse(result) #获取请求体 json_str = request.body #将请求体转换为python串 json_obj = json.loads(json_str) #取数据 username = json_obj.get('username') password = json_obj.get('password') #验证用户名和密码 try: user = UserProfile.objects.get(username=username) except Exception as e: print('用户名验证失败%s'%(e)) result = {'code':208,'error':'用户名不存在'} return JsonResponse(result) #给明文密码加密 hash_object = hashlib.md5() hash_object.update(password.encode()) pwd = hash_object.hexdigest() #比对密码 if pwd != user.password: result = {'code':209,'error':'提交的用户名或密码不正确'} return JsonResponse(result) result = {'code':200, 'username':username, 'data':{}} return JsonResponse(result)
4绑定路由:
from user import views as user_views from dtoken import views as dtoken_views from django.conf.urls.static import static from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), path('test_cors',views.test_cors), path('v1/users',user_views.UserViews.as_view()), path('v1/tokens',dtoken_views.tokens), ] urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
二前端
1前端页面编写提交数据方法:
<body>
<div class="main">
<ul class="right-form">
<h2>Login:</h2>
<li><input type="text" class="username" name="username" /></li>
<li><input type="password" class="password" name="password"/></li>
<input type="button" value="登录" oncliick="login()">
</ul>
</div>
</body>
<script>
function login(){
var username = $('.username').val();
var password = $('.password').val();
var post_data = {"username":username,"password":password};
$.ajax({
type:'post',
contentType:'application/json',
<!--约定后端传回的数据类型-->
dataType:'json',
<!--要传走的数据-->
data:JSON.stringify(post_data),
url:'http://127.0.0.1:8000/v1/tokens',
success: function (result){
if (result.code == 200){
alert('登录成功')
}else{
alert(result.error)
}
}
})
}
</script>
</html>
2浏览器访问登录页面登录测试:
http://127.0.0.1:5000/login

浙公网安备 33010602011771号