python + django 搭建页面----登录页面

Python3.7 + Django3.2 + MySQL8.0

在这里插入图片描述


一、创建一个web服务器

django-admin startproject pyweb

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

二、创建app(web应用程序)

python manage.py startapp web

1.启动网站试试

python manage.py runserver

在这里插入图片描述提示了‘错误’,但是依然可以访问网页,可以不用管,我们用的并不是它默认提供的数据库
在这里插入图片描述

2.注册app

在pyweb\pyweb\settings.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 dj;
配置数据库(修改pyweb\pyweb\settings.py配置信息):

注释掉原始数据库配置,删除数据文件pyweb\db.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': 'dj',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'root'  
    }
}

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

pip install mysqlclient
pip install pymysql

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

from django.db import models


# Create your models here.
# 文件中每个class相当于单个数据库表,每个属性也是这个表中的一个字段。 属性名就是字段名,它的类型(例如 #CharField )相当于数据库的字段类型 (例如 varchar )。
class Admin(models.Model):
    """Admin Info"""
    # ID 字段可以自动生成
    username = models.CharField(verbose_name='姓名', max_length=32)
    password = models.CharField(verbose_name='密码', max_length=32)


生成数据表:

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

python manage.py makemigrations

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

python manage.py migrate

得到如下表,除了最后一个是我们自己创建的,其他表都是系统生成的:
在这里插入图片描述在这里插入图片描述

在web_admin表中插入几条记录,登录页面的验证要用到username和password字段:

insert into web_admin(username,password) values ('giao','0000');
insert into web_admin(username,password) values ('jing','1111');

4.登录页面

先放出页面效果
在这里插入图片描述

关联页面要用到pyweb\pyweb\urls.py 和 pyweb\web\views.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结构更清晰

<!DOCTYPE html>
<html>
<head>
    <title>Japan_is_shit</title>
</head>
<body>
    <div>
        <h2>用户登陆</h2>
        <!-- 表单 -->
        <form method="post">
            <!-- django默认在post请求加一个csrf_token值,不加{% csrf_token %}会报错 -->
            {% csrf_token %}



            <div>
                <label>用户名</label>
                <div>
                    <input type="" name="user">
                </div>
            </div>



            <div>
                <label>密码</label>
                <div>
                    <input type="" name="pwd">
                </div>
            </div>



            <div>
                <div>
                    <!-- 错误信息 -->
                    <span>{{error_msg}}</span>
                    <button>登录</button>
                </div>
            </div>




        </form>
    </div>
</body>
</html>

到这为止,访问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.

# 用request方式
def login(request):
    # 如果请求方式是get,就返回本页面,否则(post方式)就获取页面提交的内容
    # 和数据库的用户名/密码做对比,相同就登录,不同就报错
    if request.method == "GET":
        return render(request, 'login.html')
    # user对应html文件<input type="" name="user">输入框,pwd同理
    name = request.POST.get('user')
    pwd = request.POST.get('pwd')
    # 从数据库web中的web_userinfo表中取出所有数据
    data_list = models.Admin.objects.all()
    # 从每条数据中取得name和password字段进行比较
    for data in data_list:
        if data.username == 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壁纸—使用图

  • 4
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Django是一个流行的Python Web框架,它提供了许多内置的功能和工具,包括用户认证和登录系统。下面是一个简单的介绍Django登录界面的步骤: 1. 创建Django项目:首先,你需要创建一个Django项目。可以使用以下命令创建一个新的Django项目: ``` django-admin startproject myproject ``` 2. 创建Django应用:接下来,你需要创建一个Django应用。在项目目录下运行以下命令: ``` python manage.py startapp myapp ``` 3. 定义用户模型:在Django中,用户认证系统是通过内置的User模型实现的。你可以在`models.py`文件中定义其他与用户相关的模型。 4. 创建登录视图:在`views.py`文件中创建一个登录视图函数,用于处理用户登录请求。你可以使用Django提供的`AuthenticationForm`表单类来处理用户输入的用户名和密码。 5. 创建登录模板:在`templates`目录下创建一个登录模板,用于显示登录表单和处理用户输入。 6. 配置URL路由:在`urls.py`文件中配置URL路由,将登录视图映射到相应的URL路径。 7. 处理登录请求:在登录视图函数中,你可以使用Django提供的`login`函数来处理用户登录请求。该函数会验证用户输入的用户名和密码,并将用户信息保存到会话中。 8. 创建登录表单:如果你想自定义登录表单的样式和字段,可以创建一个继承自`AuthenticationForm`的表单类,并在登录视图中使用该表单类。 这只是一个简单的介绍,实际上,Django提供了更多高级的功能和选项来处理用户认证和登录。你可以根据自己的需求进行定制和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值