基于Django+MySQL的B/S模式云端留言系统登录页面

环境介绍虚拟机):
win系统(数据存储) :
IP 192.168.5.157
MySQL
ubuntu服务端s):
192.168.5.128
pycharm
物理机(客户端c):
浏览器

一、实现步骤

(一)数据库管理系统操作

  1. win安装数据库管理系统MySQL,参考博文:MySQL数据库的安装步骤
  2. 开启MySQL远程链接权限
  3. 数据库管理系统MySQL中创建应用app数据存储目标数据库cucdate数据库名)

1. 在win安装数据管理系统MySQL,参考博文[:MySQL数据库的安装步骤](https://blog.csdn.net/qq_28938301/article/details

下面重点介绍2 和3

2 开启MySQL远程链接权限

MySQL数据库系统中的每个用户都有自己用户名密码用于验证身份控制访问权限。在MySQL中,用户信息存储在mysql.user表中
1)使用以下命令查看用户
select * from mysql.user
select user from mysql.user
在这里插入图片描述 图1

2)我们项目实现中,可以使用rootubuntu 连接迁移数据到MySQL数据库中,需要root用户开启远程连接权限
查看当前root登录权限是否允许远程登录如图所示host属性对应的值为:locahost说明只能本地登录
在这里插入图片描述 图2 root用户信息

修改权限操作:

①:先进入mysql数据库(虽然提示已经是mysql>)但是一般情况可能需要use mysql然后输入

Update user set host=’%’ where user=’root’; #修改user表中user属性列为root的行host的值为‘%’

`在这里插入图片描述
②:执行命令mysql>flush privileges; 授权提交

3 )在数据库管理系统MySQL中创建应用app数据存储目标数据库(数据库名)如下图连接到stusys数据库,具体的数据库名可以根据自己创建而定

项目根目录下的setting.py设置连接数据库MySQL
在这里插入图片描述应用app目录下的models.py创建数据模型(表格式
在这里插入图片描述
备注,如果运行后出现以下图提示
在这里插入图片描述
需要以下操作步骤

在这里插入图片描述
在这里插入图片描述
项目__init__.py中设置 版本兼容

import pymysql

pymysql.version_info=(1,4,6,'final',0)
pymysql.install_as_MySQLdb()

完成以上数据库的环境部署

(二) 服务端Ubuntu服务代码开发

1 .页面表单元素设计客户端页面服务端的数据交互

在这里插入图片描述

2 在urls.py中添加path

在这里插入图片描述

3 在views.py中书写视图函数 talk_login(进行业务处理–登录信息验证

验证环节需要读取表中的数据,为了保证顺利读取models .py中定义数据表需要时可使用如下代码 import 导入

from .models import *   # 把模型中的表导到当前views.py中

在这里插入图片描述

1) 在给客户渲染html页面中增加form标签,以及 {% csrf_token %}安全

页面通过容器div里增加form组件实现时需要以下几个注意点:
action属性点击按钮后的URL,页面提交数据method=‘POST’(如本文代码
form 中的输入框组件input要有name属性,其name属性将在视图函数用来获取客户端在该input内的输入值(如本文 ,当views函数获取数据时,代码下图

 实例
<div class="centered"> <!--使用div定义一个中间容器 -->
         <form  action="/talk_find/login/" method="post">
             {% csrf_token %}
             <h1>欢迎进入留言系统</h1>
            <fieldset>
              <legend>
                请输入登录信息:
              </legend>
              <table>
                <tr>
                  <td>
                    用户名:
                  </td>
                  <td>
                    <input type="text" id="txtUserName" name="u" autofocus="true">
                  </td>
                </tr>
                <tr>
                  <td>密码:</td>
                  <td><input type="text" id="txtPassword" name="p"></td>
                </tr>
                <tr>
                  <td colspan="3">
                    <input type="submit" value="提交">
                    <input type="reset" value="重置">
                    <input type="button" value="注册">
                </tr>
              </table>
            </fieldset>
          </form>
设置urls.py的path路径form中的URL路径视图函数的映射

在这里插入图片描述

4 数据库现有模型(表)迁移到MySQL数据库管理系统所在的系统
在项目中目录终端执行
在这里插入图片描述

python3 manage.py makemigrations app应用名)
python3 manage.py migrate

二、服务启动测试

(一) 使用指定ip地址端口方式启动

python3 manage.py runserver 192.168.5.128:8000
注意:使用的IP必须与settings.py中 第28行左右 ALLOWED_HOSTS 的设置一致,ALLOWED_HOSTS = [‘192.168.5.128’,]
在这里插入图片描述

(二)views.py中函数实现

1 简单用户信息接收为空判断

函数只要是客户浏览器输入内容对应的URL即可看到显示的页面内容hello本文views.py函数功能中页面只用简单的‘’HELLO‘’)

python
def talk_login(request):
   username=request.POST.get('u')
   print(username)
   userid=request.POST.get('p')
   if userid and username:
       return HttpResponse('HELLO')
   else:
       print('no')

在这里插入图片描述

2 连接MySQL进行用户名以及密码验证成功后跳转到留言提交页面

 def talk_login_au(request):
     username1 = request.POST.get('u')
     userid1= request.POST.get('p')
     get_date=userdate.objects.get(userid=userid1,username=username1) # 这里的userdate是在models.py中建立的数据模型(表的名字),userid,username属于表的属性列部分
     if get_date:
         #return HttpResponse('HELLO')
         return render(request,'submit_message.html')
 else:
     print('no')

以上代码中的submit_message.html是所要打开的页面文档可以自行定义,也可参考基于Django+MySQL的B/S模式云端留言系统之留言提交与查看

三、总结知识扩展

(一) 在 Django 和 MySQL 中设计登录界面,按照以下步骤进行:

  1. 安装 Django 和 MySQL 驱动:首先,确保已安装 Django 框架和适用于 MySQL 的数据库驱动程序

  2. Django 项目和应用:使用 Django命令行工具创建一个新的 Django 项目,并在项目中创建一个应用本文前面博文中已经创建的项目)。

  3. 配置数据库连接:打开 settings.py 文件配置 MySQL 数据库连接。

DATABASES = {
default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘your_database_name’,
‘USER’: ‘your_username’,
‘PASSWORD’: ‘your_password’,
‘HOST’: ‘your_host’,
‘PORT’: ‘your_port’,
}
}

替换上述配置选项中的 your_database_nameyour_usernameyour_passwordyour_hostyour_port 分别为你的 MySQL 数据库相关信息。

  1. 创建用户模型:在 models.py 文件中定义一个用户模型用于存储用户的登录信息。
from django.db import models
from django.contrib.auth.models import AbstractUser

class userdate(AbstractUser):
    # 添加自定义字段
    # 
    pass

这里可以 Django 内置AbstractUser 类来扩展用户模型,当然还可以根据需要添加其他自定义字段(本博文采用自定义)。

  1. 迁移数据库:运行以下命令来创建数据库表格
$ python3 manage.py makemigrations my1  # my1是对应应用app,也可以不带,默认迁移当前项目所有的APP

$ python3 manage.py migrate

这将根据定义的模型创建相应的数据库表
完成以上步骤可以在MySQL看到对应的表
在这里插入图片描述

  1. 创建登录视图和模板:在 views.py 文件中创建登录视图函数,用于处理用户登录逻辑。(需直接在views.py中调用客户端页面中 form中的input组件的name 属性值来获取用户的输入)
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def login_view(request):
    if request.method == 'POST':
        username = request.POST['username1']
        password = request.POST['password1']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            return redirect('home')  # 登录成功后跳转到URL(PATH 中属性为home的页
        else:
            error_message = 'Invalid username or password'
    else:
        error_message = ''
    return render(request, 'login.html', {'error_message': error_message})

在上述代码中,使用 authenticate() 函数进行用户认证,如果认证成功,则使用 login() 函数登录用户,并重定向主页。否则,显示错误消息并再次渲染登录模板

  1. 创建登录模板:在应用的模板文件夹中创建一个名为 login.html模板用于显示登录界面和处理表单提交
<form method="post" action="{% url 'login' %}">
  {% csrf_token %}
  <label for="username">Username:</label>
  <input type="text" id="username" name="username1">
  <label for="password">Password:</label>
  <input type="password" id="password" name="password1">
  <button type="submit">Login</button>
</form>
<p>{{ error_message }}</p>

在上述模板中,使用 <form> 元素创建登录表单,表单的提交目标为登录视图的 URL。使用 {{ error_message }} 显示错误消息

  1. 配置 URL 路由:在应用的 urls.py 文件配置登录视图的 URL 路由
from django.urls import path
from .views import login_view

urlpatterns = [
    path('login/', login_view, name='login'),
]

这将将 /login 路径映射到登录视图函数。

  1. 运行服务器运行以下命令启动 Django 开发服务器
$ python3 manage.py runserver

现在,浏览器访问 服务器查看登录界面,并使用用户模型进行登录。

上述代码只提供了基本的登录界面设计,其中涉及了用户模型、视图函数和模板的创建。
{% url 'login' %} 是 Django 模板语言(Django Template Language)中的一个模板标签。它用于生成 URL,该 URL 对应于在 URL 配置中定义的命名 URL 模式

在 Django 中,URL 配置文件(通常是项目文件夹中的 urls.py)定义了 URL 模式和视图函数之间的映射关系。URL 模式可以使用 name 参数进行命名

{% url 'login' %} 中的 'login' 是一个参数,它指定了要生成 URL 的名称。它对应于 URL 配置文件中定义的具有相同名称的 URL 模式。

使用 {% url %} 模板标签,你可以避免在模板中硬编码 URL,而是通过 URL 的名称生成 URL。这样,如果将来需要更改 URL 模式,只需更新 URL 配置文件,而不需要在模板中手动修改每个相关 URL。

例如假设在你的应用的 URL 配置文件中有以下代码:

from django.urls import path
from .views import login_view

urlpatterns = [
    path('login/', login_view, name='login'),
]

在模板中使用 {% url 'login' %}生成 /login/ 的 URL。这样,如果将来需要更改登录页面的 URL,只需在 URL 配置文件更新相应的 URL 模式即可,而不需要在模板中手动修改。

总结起来,{% url 'login' %} 用于在 Django 模板中生成与命名 URL 模式对应的 URL。

原文地址:https://blog.csdn.net/qq_28938301/article/details/134091154

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_24740.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注