学习Django中:试着着写一个用户注册登录系统,开始搞事情 =====O(∩_∩)O哈哈~=====

=================

Ubuntu

python 2.7.12

Django 1.10.4

IDE:Pycharm

Bootstrap(其实没怎么用~~)

=================

新建项目:(我是直接用pycharm直接生成的)

使用终端:

(创建项目)django-admin.py startproject mysite

(进入mysite新建app)django-admin.py startapp app01

记得在settings.py里面添加app

设计模型:

/mysite/app01/models.py:

 from __future__ import unicode_literals

 from django.db import models

 # Create your models here.

 class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField()

创建User类,存放 username、password、email三个字段

同步数据库:

Python manage.py makemigrations

python manage.py migrate

Django会自动创建一系列表

没有自动创建superuser.......咱们手动创建:

python manage.py createsuperuser

设计逻辑视图(views):(使用表单)

/mysite/app01/views.py:

 #coding=utf-8
from django.shortcuts import render,render_to_response
from django.http import HttpResponse
from django import forms
from models import User
# Create your views here.
class UserForm(forms.Form):
username = forms.CharField(label='用户名',max_length=50)
password = forms.CharField(label='密码',widget=forms.PasswordInput())
email = forms.EmailField(label='邮箱') def regist(request):
if request.method == 'POST':    
userform = UserForm(request.POST)
if userform.is_valid():
username = userform.cleaned_data['username']
password = userform.cleaned_data['password']
email = userform.cleaned_data['email'] User.objects.create(username=username,password=password,email=email)
User.save() return HttpResponse('regist success!!!')
else:
userform = UserForm()
return render_to_response('regist.html',{'userform':userform}) def login(request):
if request.method == 'POST':
userform = UserForm(request.POST)
if userform.is_valid():
username = userform.cleaned_data['username']
password = userform.cleaned_data['password'] user = User.objects.filter(username__exact=username,password__exact=password) if user:
return render_to_response('index.html',{'userform':userform})
else:
return HttpResponse('用户名或密码错误,请重新登录') else:
userform = UserForm()
return render_to_response('login.html',{'userform':userform})

注释:

label:标签

widget:装饰

widget=forms.PasswordInput():设置密码字段

设计模板文件

在templates里面新建index.html、regist.html、login.html

regist.html

<!DOCTYPE html>
{% load static %}
<html lang="zh-CN"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<meta name="description" content="">
<meta name="author" content=""> <title>Regist</title> <!-- Bootstrap core CSS -->
<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="{% static 'css/ie10-viewport-bug-workaround.css' %}" rel="stylesheet"> <!-- Custom styles for this template -->
<link href="{% static 'css/signin.css' %}" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="{% static 'js/ie-emulation-modes-warning.js' %}"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<style>
html,body{text-align:center;margin:0px auto;}
</style>
<body>
<h1>注册页面</h1>
<form method = 'post' enctype="multipart/form-data">
{{userform.as_p}}
<input type="submit" value = "Regist" />
</form>
</body>
</html>

login.html

<!DOCTYPE html>
{% load static %}
<html lang="zh-CN"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<meta name="description" content="">
<meta name="author" content=""> <title>Login</title> <!-- Bootstrap core CSS -->
<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="{% static 'css/ie10-viewport-bug-workaround.css' %}" rel="stylesheet"> <!-- Custom styles for this template -->
<link href="{% static 'css/signin.css' %}" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
<!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
<script src="{% static 'js/ie-emulation-modes-warning.js' %}"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
<script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<style>
html,body{text-align:center;margin:0px auto;}
</style>
<body>
<h1>登录页面</h1>
<form method = 'post' enctype="multipart/form-data">
{{userform.as_p}}
<input type="submit" value = "Login" />
</form>
</body>
</html>

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<style>
html,body{text-align:center;margin:0px auto;}
</style>
<body>
<h1>Hello Word!</h1>
</body>
</html>

设计urls

/mysite/urls.py

from django.conf.urls import url,include
from django.contrib import admin
from app01 import urls
import app01 urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'',include(app01.urls)),
]

/mysite/app01/urls.py

from django.conf.urls import url,include
from django.contrib import admin
import views
admin.autodiscover() urlpatterns = [
url(r'^index/$',views.index),
url(r'^login/$',views.login),
url(r'^regist/$',views.regist), ]

使用admin后台管理注册的用户

在models.py里面设计一个UserAdmin类,用来记录注册用户的信息

/mysite/app01/models.py

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models # Create your models here. class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField() class UserAdmin(admin.ModelAdmin):
list_display = ('username','password','email') admin.site.register(User,UserAdmin)

同步一下数据库(方法同上)

效果图

主页:

注册页:

登录页面:

后台:

Django实现用户注册登录的更多相关文章

  1. Django之auth登录认证

    前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...

  2. Django+bootstrap+注册登录系统

    转自:https://www.cnblogs.com/robindong/p/9610057.html Robin_D 博客园 首页 新随笔 联系 订阅 管理 随笔 - 10  文章 - 0  评论 ...

  3. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  4. 基于xml的用户注册登录案例

    用户注册登录 要求:3层框架,使用验证码 1        功能分析 l  注册 l  登录 1.1 JSP页面 l  regist.jsp 注册表单:用户输入注册信息: 回显错误信息:当注册失败时, ...

  5. express框架+jade+bootstrap+mysql开发用户注册登录项目

    完整的项目代码(github):https://github.com/suqinhui/express-demo express是基于Node.js平台的web应用开发框架,用express框架开发w ...

  6. 用户注册登录系统 V2.0

    # 准备空列表 users = [] # 准备当前在线用户 online_user = {} while True: # 打印系统提示 print("欢迎使用 用户注册登录系统V2.0&qu ...

  7. redis实践:用户注册登录功能

    本节将使用PHP和Redis实现用户注册登录功能,下面分模块来介绍具体实现方法. 1.注册 需求描述:用户注册时需要提交邮箱.登录密码和昵称.其中邮箱是用户的唯一标识,每个用户的邮箱不能重复,但允许用 ...

  8. 超全面的JavaWeb笔记day14<用户注册登录>

    案例:用户注册登录 要求:3层框架,使用验证码 1 功能分析 l 注册 l 登录 1.1 JSP页面 l regist.jsp Ø 注册表单:用户输入注册信息: Ø 回显错误信息:当注册失败时,显示错 ...

  9. Django:用户登录实例

    Django:用户登录实例 一.源代码 1,login.html代码(登录界面): <!DOCTYPE html> <html lang="zh-CN"> ...

随机推荐

  1. IOS开发-UI学习-delegate(代理)的使用,键盘消失

    代理是IOS开发中用到的一种设计模式.今天做了一个代理的小练习: 以下项目实现了两个页面之间的相互切换,并且在切换页面的时候完成了从一个页面往另一个页面的传值.从主页面往其他页面传值是容易的,但是反过 ...

  2. IOS开发-OC学习-kvc,kvo

    kvc是用来方便的设置实例的属性值的,比如person类的实例p1有一个name的属性,那么我们可以通过kvc去设置p1的name,语法是: [ 对象 setValue:@"xiaming& ...

  3. SVN和Git的一些用法总结

    (A)SVN (1)查看日志提交的时候一般会写上注释,如果要查看提交日志,用以下命令: 1 svn log -l 4 其中,-l 4表示只查看最近4条日志(也可以没有这样的参数,就表示查看所有日志). ...

  4. UVa 10041 - Vito's Family

    题目大意:给出一些点,找到一个位置使这个位置到所有的点的距离的和最短. 很明显,排序,找中位数.关于中位数:有n个从小到大的数,k=(n+1)/2,若n为奇数,k为中位数,若n为偶数,k为中间那两个数 ...

  5. Html emed 和 object

    <object> 标签用于包含对象,比如图像.音频.视频.Java applets.ActiveX.PDF 以及 Flash. object 的初衷是取代 img 和 applet 元素. ...

  6. METRO风格

    METRO风格是指微软在WINDOWS PHONE 7中新加入的界面风格,并且计划将其用于windows8中的开始菜单界面.该界面的特点是简洁高效,每一个METRO图标都没有边框,形状有点像地铁站中的 ...

  7. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  8. js原生设计模式——2面向对象编程之继承—call(this)构造函数式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. HTTP协议缓存策略深入详解之ETAG妙用

    Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等.具体内部含义是使服务器控制的,就像Cookie那样. HTTP协议规格说明定义 ...

  10. EL表达式 requestScope initParam用法

    EL表达式 requestScope initParam用法: servlet: package com.stono.servlet; import java.io.IOException; impo ...