环境要求:
Windows10
Python3.6.4
Django2.0.2
Eclipse+Pydev
实现需求:
1、用户注册:用户名称 密码、邮箱 手机号 住址等信息;
2、用户注册完成后,跳转用户信息展示页面;
实现步骤:
1、搭建Eclipse+Pydev+Python3.6.4+Django2.0.2的开发环境;
2、新创建一个Django的web项目,进入new--Django project项目;
新建Django项目目录包含:项目容器(settings.py、urls.py、wsgi.py)、manage.py;
StuMan: 项目的容器。
manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
StuMan/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
StuMan/settings.py: 该 Django 项目的设置/配置。
StuMan/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
StuMan/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。
3、创建一个app应用,右键点击项目目录--Django---create application;
生成一个student的app应用,包含student容器以及下面的migrations、admin.py、apps.py、models.py、tests.py、views.py;
admin.py:Django自带了一个管理界面,这个文件可以注册model在界面中管理
__init__.py:表明polls也是一个包
migrations:用来初始化数据库,在执行python manage.py makemigrations 的时候会自动生成一个文件在这里
__init__.py:表明migrations也是一个包
models.py:在这个文件里面定义model类
tests.py:写测试代码
views.py:视图,Django映射urls.py里面的url的时候,在views.py里面查找对应的处理方法
4、StuMan目录下添加一个模板文件夹:template
5、StuMan目录下的settings.py
1)修改允许访问的ip为所有:ALLOWED_HOSTS = ['*']
2)添加新增的app应用:INSTALLED_APPS
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'student', ]
3)添加模板路径
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'template')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },
4)修改使用的数据库配置--支持mysql
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'testDjango', 'USER':'root', 'PASSWORD':'cecgw', 'HOST':'192.168.2.70', 'PORT':'3306', 'OPTIONS':{ 'init_command':"SET sql_mode='STRICT_TRANS_TABLES'", 'charset':'utf8mb4', }, } }
6、用户注册的数据库设计
student/model.py创建用户注册信息表
# -*- coding: utf-8 -*- from django.db import models # Create your models here. class message(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=15) mail = models.EmailField(max_length=50) phone=models.IntegerField() address=models.CharField(max_length=100)
在终端Terminal 项目目录下执行数据表更新命令:
1
2
|
python manage.py makemigrations
python manage.py migrate
|
生成一个用户注册信息表,可以看到属性信息
7、在student目录下views.py增加两个函数insert 注册信息 show 展示信息
# -*- coding: utf-8 -*- from django.shortcuts import render,redirect from testform import models def insert(request): if request.method=='GET': return render(request,'register.html') elif request.method == "POST": username = request.POST.get("username", None) password = request.POST.get("password", None) mail = request.POST.get("mail", None) phone = request.POST.get("phone", None) address = request.POST.get("address", None) models.message.objects.create(username=username, password=password, mail=mail, phone=phone, address=address) return redirect('testform:show') def list(request): people_list = models.message.objects.all() return render(request, 'show.html', {"people_list":people_list})
8、在student下增加一个url.py
from django.contrib import admin from django.urls import path,include from testform import views #include()函数允许引用其他的 URLconf。每当 django 遇到 include(),它会截取 URL #中匹配到的前面的部分,并将剩余部分的字符串发送给包含的 URLconf 做进一步处理。 app_name='testform' urlpatterns = [ path('register/',views.insert,name='register'), path('show/',views.list,name='show'), ]
然后在stuman目录下的urls.py,进行组合配置url
from django.contrib import admin from django.urls import path,include from testform import views #include()函数允许引用其他的 URLconf。每当 django 遇到 include(),它会截取 URL #中匹配到的前面的部分,并将剩余部分的字符串发送给包含的 URLconf 做进一步处理。 urlpatterns = [ path('testform/',include('testform.urls', namespace='testform')), ]
9、在template模板目录下创建两个html文件,用于用户注册和用户信息展示
register.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用户注册</title> <STYLE type="text/css"> #login{ width:400px; height:280px; position:absolute; left: 50%; top: 50%; margin-left:-200px; margin-top:-140px; border:1px; background-color:white; align:center; } #form{ width:300px; height:160px; position:relative; left:50%; top:50%; margin-left:-150px; margin-top:-80px; } </STYLE> </head> <body> <div id="login"> <div id="form"> <form id='addForm' action="{% url 'testform:register' %}" method="post"> {% csrf_token %} <div class="form-group"> <label for="name">姓 名:</label> <input type="text" name="username" placeholder="请输入用户名" required/> </div> <div class="form-group"> <label for="name">密 码:</label> <input type="password" name="password" placeholder="请输入密码" required/> </div> <div class="form-group"> <label for="name">邮 箱:</label> <input type="mail" name="mail" placeholder="请输入邮箱地址" required/> </div> <div class="form-group"> <label for="name">手机号:</label> <input type="phone" name="phone" placeholder="请输入正确的手机号" required/> </div> <div class="form-group"> <label for="name">住 址:</label> <input type="address" name="address" placeholder="请输入你现在的住址" required/> </div> <input type="submit" value="提交" align="right"> </form> </div> </div> </body> </html>
show.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>用户信息</title> <STYLE type="text/css"> #login{ width:400px; height:280px; position:absolute; left: 50%; top: 50%; margin-left:-200px; margin-top:-140px; border:1px; background-color:white; align:center; } #form{ width:300px; height:160px; position:relative; left:50%; top:50%; margin-left:-150px; margin-top:-80px; } </STYLE> </head> <body> <h1>信息展示</h1> <table> <tr> <th>用户名</th> <th>密码</th> <th>邮箱</th> <th>手机号</th> <th>地址</th> </tr> {% for line in people_list %} <tr> <td>{{line.username}}</td> <td>{{line.password}}</td> <td>{{line.mail}}</td> <td>{{line.phone}}</td> <td>{{line.address}}</td> </tr> {% endfor %} </table> </body> </html>
实现结果展示