栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python + django 搭建页面

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python + django 搭建页面

Python3.7 + Django3.2 + MySQL8.0

文章目录
  • Python3.7 + Django3.2 + MySQL8.0
  • 一、创建一个web服务器
  • 二、创建app(web应用程序)
    • 1.启动网站试试
    • 2.注册app
    • 3.建立表结构(mysql数据库)
    • 4.登录页面
  • 总结


一、创建一个web服务器
django-admin startproject pyweb

pyweb 文件下包含一个同名文件夹和manage.py
manage.py可以理解是网站的管理脚本,同名文件夹功能可以理解为对网站内容的控制

二、创建app(web应用程序)
python manage.py startapp web
1.启动网站试试
python manage.py runserver

提示了错误,但是依然可以访问网页,我们只需要退出后输入

python manage.py migrate #根据提示重建表结构

再重新启动后可成功访问(不提示重建表结构)

2.注册app

在pywebpywebsettings.py中注册app,添加’web.apps.WebConfig’的字段:

# Application definition
#应用定义
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #注册app,连接的是web/apps.py 文件中的WebConfig类(创建的名字不同,类名也不同)
    'web.apps.WebConfig',  
]

Django设计app的核心理念是功能的模块化和可重用。

3.建立表结构(mysql数据库)

首先要打开数据库,建立一个本次项目的数据库
create database web;
配置数据库(修改pywebpywebsettings.py配置信息):

注释掉原始数据库配置,删除数据文件pywebdb.sqlite3
# Database 
# https://docs.djangoproject.com/en/3.2/ref/settings/#databases

# DATABASES = {
#     'default': {
#         'ENGINE': 'django.db.backends.sqlite3',
#         'NAME': BASE_DIR / 'db.sqlite3',
#     }
# }


#mysql  database 
# 添加的内容
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'web',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'root'  
    }
}

保证这两个操作mysql 的模块已经安装

pip install mysqlclient
pip install pymysql

在pywebwebmodels.py中建表:
文件中每个class相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如 #CharField )相当于数据库的字段类型 (例如 varchar )。

from django.db import models

# Create your models here.
#文件中每个class相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如 #CharField )相当于数据库的字段类型 (例如 varchar )。
class Company(models.Model):
    """公司表"""
    #ID 字段可以自动生成
    companyname = models.CharField(verbose_name='公司名称',max_length=64,null=False)

class Userinfo(models.Model):
    """人员信息"""
    name = models.CharField(verbose_name='姓名',max_length=32)
    password = models.CharField(verbose_name='密码',max_length=64)
    age = models.IntegerField(verbose_name='年龄')
    sign = models.CharField(verbose_name='签名',max_length=255)

    # 绑定外键并级联删除,删除公司时删除属于公司的所有人
    companyinfo = models.ForeignKey(verbose_name='公司',to='company',to_field='id',on_delete=models.CASCADE)
    # # 绑定外键删除置空
    # companyinfo = models.ForeignKey(to='companyname',to_field='id',null=True,blank=True,on_delete=models.SET_NULL)
    
    gender_choices = (
            (1,'男'),
            (2,'女'),
        )
    gender = models.SmallIntegerField(verbose_name='性别',choices = gender_choices)

生成数据表:

1、生成迁移文件(在终端执行如下命令)

python manage.py makemigrations

2、执行迁移文件(在终端执行如下命令)

python manage.py migrate

得到如下表,除了我们要的两表,其他表都是系统生成的:
在web_userinfo表中插入几条记录,登录页面的验证主要用到name和password字段:

insert into web_userinfo(name,password,age,sign,gender,companyinfo_id) values ('肖战','00000',20,'haha',2,1);
insert into web_userinfo(name,password,age,sign,gender,companyinfo_id) values ('南藤','11111',29,'萨瓦迪卡',2,2);
insert into web_userinfo(name,password,age,sign,gender,companyinfo_id) values ('giao','22222',29,'开心你就拍手',2,2);
4.登录页面

先放出页面效果

关联页面要用到pywebpyweburls.py 和 pywebwebviews.py 两个文件(假设我们已经有了login.html页面)。
1.先做网站目录链接到函数的部分url.py

from django.contrib import admin
from django.urls import path

# 必须先导入web/views
from web import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    # 把网站地址和要执行函数建立对应关系
    path('login/',views.login),
]

2.再把函数和login.html页面相关连

from django.shortcuts import render
#导入重定向redirect为了测试
from django.shortcuts import redirect
#导入models为了操作数据库
from web import models
# Create your views here.

def login(request):
    return render(request,'login.html')

3.做一个login.html页面,我们要先建一个templates文件夹来放html文件(还有static文件夹来放有关html的文件,例如img,css,js等),就像这样,然后login.html新建在templates文件夹下即可。

简单构建一个页面,表单form中添加三个div,并增大间距代码让login.html结构更清晰




    Japan_is_shit


    

用户登陆

{% csrf_token %}
{{error_msg}}

到这为止,访问http://127.0.0.1:8000/login/就可以访问到login.html页面。

4.接下来在views.py的login函数中写登录的逻辑

from django.shortcuts import render,redirect
#导入models为了操作数据库
from web import models
# Create your views here.


def login(request):
    # 如果请求方式是get,就返回本页面,否则(post方式)就获取页面提交的内容
    # 和数据库的用户名/密码做对比,相同就登录,不同就报错
    if request.method == "GET":
        return render(request,'login.html')
    #user对应html文件输入框,pwd同理
    name = request.POST.get('user') 
    pwd = request.POST.get('pwd')
    #从数据库web中的web_userinfo表中取出所有数据
    data_list = models.Userinfo.objects.all()
    # 从每条数据中取得name和password字段进行比较
    for data in data_list:
        if data.name == name and data.password ==pwd:
            # 登录成功跳转到我主页
            return redirect('https://blog.csdn.net/qq_43504837')
    # 登录不成功就返回本页面,并给出错误信息
    return render(request,'login.html',{"error_msg":"用户名或错误"})

让我们再看看数据库web_userinfo表中的数据,这时用他们的name和password就可以登录了(指跳转至我主页)

总结

下篇把登录页面的css实现一下,加入用户认证和图片验证码。
背景图片链接
孤勇者 双城之战 金克丝 厚涂 孤勇者4k壁纸—原图
孤勇者 双城之战 金克丝 厚涂 孤勇者4k壁纸—使用图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879531.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号