Python3.6+Django2.0.2,实现用户注册,并展示用户名称和密码列表

环境要求:

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>


实现结果展示





猜你喜欢

转载自blog.csdn.net/xianjie0318/article/details/79897962