要写这个,前提还是需要知道三个知识:
一个是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,就行操作。

django写一个简单的登陆注册的更多相关文章

  1. 初学html,任务2:写一个简单的登陆/注册界面

    先在body中把最基础的标签写出来 现在页面运行出来是这样的 就是一个没有任何样式的基础界面: 接下来我们为这些标签加上样式 首先还是让页面所有元素的padding和margin都设置为0, 清除浏览 ...

  2. 用Html写一个简单的登陆界面

    <!DOCTYPE html> <html> <title>登陆页面</title> <head> <meta charset=&qu ...

  3. ########django-基于中间件写一个限制频繁登陆########

    django-基于中间件写一个限制频繁登陆 额额,标题已经很醒目了,通过中间件去实现,其他方法也可以实现 浏览器前端传来的请求,必须通过中间件,才能到后面路由,视图函数,所以我们在中间件那里做一层处理 ...

  4. 使用QT实现一个简单的登陆对话框(纯代码实现C++)

    使用QT实现一个简单的登陆对话框(纯代码实现C++) 效果展示 使用的QT控件 控件 描述 QLable 标签 QLineEdit 行文本框 QPushButton 按扭 QHBoxLayout 水平 ...

  5. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  6. 如何写一个简单的http服务器

    最近几天用C++写了一个简单的HTTP服务器,作为学习网络编程和Linux环境编程的练手项目,这篇文章记录我在写一个HTTP服务器过程中遇到的问题和学习到的知识. 服务器的源代码放在Github. H ...

  7. bootstrap 一个简单的登陆页面

    效果如图:用bootstrap 写的一个简单的登陆 一.修改样式 样式可以自己调整,例如换个背景色之类的,修改 background-color属性就可以 #from { background-col ...

  8. express 写一个简单的web app

    之前写过一个简单的web app, 能够完成注册登录,展示列表,CURD 但是版本好像旧了,今天想写一个简单的API 供移动端调用 1.下载最新的node https://nodejs.org/zh- ...

  9. 如何写一个简单的HTTP服务器(重做版)

    最近几天用C++重新写了之前的HTTP服务器,对以前的代码进行改进.新的HTTP服务器采用Reactor模式,有多个线程并且每个线程有一个EventLoop,主程序将任务分发到每个线程,其中采用的是轮 ...

随机推荐

  1. VS 游戏:推箱子&对战游戏

    推箱子 //只做了两关 class Program { static void Main(string[] args) { ; ; ; ; ; ; ; #region 地图绘制 , , ] { { { ...

  2. Java集合篇三:Vector

    package com.test.collection; import java.util.Vector; public class MyVector { /** * @param args */ p ...

  3. SQLAlchemy的使用---外键ForeignKey数据增删改查

    # 添加数据 from sqlalchemy.orm import sessionmaker from create_table_ForeignKey import engine, Student, ...

  4. String StringBuffer StringBuilder对比

    1.相同点 三者都可以用来存储字符串类型数据. 2.不同点 String类型对象内容不可变,每变化一次都会创建一个新的对象. StringBuiler与StringBuffer的内容与长度均可以发生变 ...

  5. File I/O 小结

    1 .I/0: input/output 2.java.io.File 3 .表示:文件或者文件夹(目录) 4. File f = new File("文件路径"); 5 .注意: ...

  6. AS打包出现app:transformClassesAndResourcesWithProguardForRelease错误

    今天打包项目的正式签名APK出现以下错误,当时挺着急用的实在没办法就只能用测试apk凑合来对付一下了 Error:Execution failed for task ':app:transformCl ...

  7. matlab练习程序(全景图到穹顶图)

    这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了. 看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,文章点此. 全景图到穹顶图变换,通俗的说就是将全景图 ...

  8. matlab练习程序(单源最短路径Bellman-Ford)

    该算法可以用来解决一般(边的权值为负)的单源最短路径问题,而dijkstra只能解决权值非负的情况. 此算法使用松弛技术,对每一个顶点,逐步减少源到该顶点的路径的估计值,直到达到最短的路径. 算法运算 ...

  9. Scope_Pre_Post

    @Scope , 设置bean的生命周期,示例:   @Scope(value="prototype")//设置生存范围,一般用 singleton或prototype 14.@P ...

  10. 扫描FTP,保存文件

    1.需求:某公司ftp服务器中一个文件夹中有30个文件(文件名字是不同的),每五分钟产生一个新的文件,同时删除这三十个文件中最早产生的文件,该文件夹中始终保持30个文件. 现在需要采集一周的数据做研究 ...