zoukankan      html  css  js  c++  java
  • 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,就行操作。

  • 相关阅读:
    资料下载
    sublime安装AngularJS插件
    Zen Coding: 一种快速编写HTML/CSS代码的方法[Emmet]
    手机号码归属地API
    浅谈JavaScript中的作用域
    原生ajax、jsoup
    Java排序:选择排序
    Java排序:冒泡排序
    Oracle系列一、基本术语
    linux jdk tomcat 安装
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/9910244.html
Copyright © 2011-2022 走看看