django写一个简单的登陆注册

要写这个,前提还是需要知道三个知识:
一个是urls.py,它是写我们的路由关系的,之前我写了通过wsgiref写一个简单的服务端,也用到了路由,就是
请求过来的url和视图函数的对应关系。
二是就是几个类,render,HttpResponse,redirect,我就说说功能
render:将模板(也就是html文件)渲染,再发送到前端页面---大概就是这样的功能,用词不太准确
HttpResponse:将字符串返回到前端页面
redirect:重定向的功能
三就是数据库相关的,orm吧

1、注册登陆两个功能,想都不要在项目templates文件夹中写两个html页面,一个是登陆,一个是注册。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>register</title>
</head>
<body>
    <h1>注册界面</h1>
    <form action="" method="post">
        用户名:<input type="text" name="name"><br>
        密码:<input type="password" name="pwd"><br>
        确认密码:<input type="password" name="re_pwd"><br>
        <input type="submit" value="注册">
    </form>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>login</title>
</head>
<body>
<h1>登陆界面</h1>
{#最简单的html代码,哈哈#}
{#这里要提醒下,提交到后台的get,post方式都可以,但是作为账户数据的话,用post#}
<form action="/login/" method="post">
    用户名:<input type="text" name="name"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="登陆">
</form>
</body>
</html>

2、写好了我们首先去urls.py文件中写好路由,把视图函数映射关系写好
 
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login', views.login),
    url(r'^register', views.register),
]
 
3、写好了就去app01中view文件中写相应的函数了,先写个空函数占位吧
4、需要数据库,先去app01中models.py写一个类(也就是创建表),属性写好了,就执行两句命令
  python3 manage.py makemigrations
  python3 manage.py migrate
这样我们的表就创建好了,那么就应该去视图函数写相关逻辑
from django.db import models


# Create your models here.

class User(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=32)
    pwd = models.CharField(max_length=32)


##创建好了,就在cmd中执行上面两条命令就好
5、在视图函数中写逻辑代码
from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.


def login(request):
    # request这是前端请求发来的请求,携带的所有数据,django给我们做了一些列的处理,封装成一个对象传过来
    # 其实挺简单,学会用它给你的一些方法就好了,其实你自己也想到它是怎样处理的。
    if request.method == 'GET':
        return render(request,'login.html')
    if request.method == 'POST':
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        user_obj = models.User.objects.filter(name=name,pwd=pwd).first()
        if user_obj:
            return HttpResponse('登陆成功')
        else:
            return HttpResponse('用户名或密码错误')

def register(request):
    if request.method == 'GET':
        return render(request,'register.html')
    if request.method == 'POST':
        name = request.POST.get('name')
        pwd = request.POST.get('pwd')
        re_pwd = request.POST.get('re_pwd')
        if name and pwd and re_pwd:
            if pwd == re_pwd:
                user_obj = models.User.objects.filter(name=name).first()
                if user_obj:
                    return HttpResponse('用户已存在')
                else:
                    models.User.objects.create(name=name,pwd=pwd).save()
                    return redirect('/login/')
            else:
                return HttpResponse('两次密码不一致')

        else:
            return HttpResponse('不能有空!')

6、启动django项目就行了,然后在浏览器输入对应的url,就行操作。

猜你喜欢

转载自www.cnblogs.com/zhuchunyu/p/9910244.html