基于PyCharm+Django+MySql搭建简易Web网站

Cealivanus Kwan Lv3

Django框架下载

pycharm 页面快捷键 alt + F12,打开terminal集成终端框

键入

1
pip install -i https://pypi.douban.com/simple/ django

完成下载(豆瓣镜像)

用Django搭建网站

terminate继续输入:

1
django-admin startproject mysite

生成mysite文件

如果使用PyCharm社区版

先使用cmd指令跳转到你的目标路径下,再键入

1
django-admin startproject [Demo1219_2][文件名]

创建完成后用PyCharm打开

启动项目

terminal输入:

1
python manage.py runserver #运行manage.py,启动项目

开始执行main.py,启动项目

如图所示启动成功:

点击蓝色链接 http://127.0.0.1:8000/ 跳转

打开设置(settings)->项目(project)安装解释器

应有上述安装包(最重要的时 Django 与 PyMySql)

点击确定(ok)退出

Django配置MySql数据库

注意要先安装好PyMySql解释器

1.打开mysite同名次级目录下的 init.py 添加

1
2
import pymysql
pymysql.install_as_MySQLdb()

2.打开同级目录下的 settings.py 文件,将数据库相关配置设置为

pycharm快捷键ctrl+F 查找

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库的类型
'NAME': 'dbdemo1219', #所使用数据库的名字 这里我新建的
'USER': 'root', #数据库服务器用户
'PASSWORD': '**********', #密码 你自己的mysql root用户密码!!!
'HOST': '127.0.0.1', #主机
'PORT': '3306', #端口
}
}

如下图所示

这里出现报错,报错信息最后是 ModuleNotFoundError: No module named ‘pymysql’

查询方知不能只添加解释器,我的电脑上安装了Django但是没有PyMySql

遂执行cmd命令

1
pip install pymysql

3.执行迁移,将项目中原有的应用的模型同步迁移到数据库

pycharm快捷键ctrl+C中断当前进程(断开服务器)

终端运行:

1
python manage.py migrate

执行出好几条“OK”

Navicat打开找出前边新建的数据库刷新发现建好了表

此时重新启动服务器 terminal

1
python manage.py runserver

浏览器输入地址

1
http://127.0.0.1:8000/admin/login

得到登录界面

本节目的在这里

但是我好像没有进行这步的配置就已经可以看到这个界面了,配置了个寂寞,可能是Django或者PyMySql更新了导致的,说不准

====2024.12.20

Admin用户创建

Ctrl+C断开服务器,终端输入:

1
python manage.py createsuperuser

创建SuperUser,按提示输入用户名(Username)邮箱(EmailAddress合适格式即可)密码(Password)

!!!此处设置(SupremeGuan 1789548110@qq.com 123456) 小写y确定

python manage.py runserver启动服务器

打开网站127.0.0.1:8000/admin/,输入相应用户名和密码

成功登入Django内置后台管理界面!

显示html界面

断开服务器连接,终端输入

1
python manage.py startapp polls

运行,文件目录里生成了polls文件夹

下一步我们的目标是在127.0.0.1:8000/polls/访问到我们的指定页面

配置路由

polls文件夹里新建urls.py作子路由

打开路径主文件夹(Demo1219_2)-> urls.py,按如下形式进行修改

1
2
3
4
5
6
7
from django.contrib import admin
from django.urls import path, include # 这里要加上 include

urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls')), # 添加一个路由
]

配置子路由polls -> urls.py ,形式如下

1
2
3
4
5
6
7
from django.urls import path

from . import views
urlpatterns = [

path('',views.toLogin_view)
]

配置子路由polls -> views.py ,形式如下

1
2
3
4
5
6
from django.shortcuts import render

# Create your views here.

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

访问时会按照 Demo1219_2-> urls.py ==》 polls -> urls.py ==》 polls -> views.py ==》最后打开 login.html 页面

在文件夹polls目录下新建软件包 templates

打开 Demo1219_2-> settings.py 找到 TEMPLATES 模块(54行左右),修改第二行的路径为:

1
'DIRS': [os.path.join(BASE_DIR,'templates')],

问题在于Django 3.1就没有引入os模块了,拼接路径需要用pathlib模块(感谢弹幕老哥提醒)

我在这里先通过设置安装了pathlib解释器,然后操作如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from pathlib import Path

# 假设 BASE_DIR 是你的基础目录
BASE_DIR = Path('/your/base/directory')

# 使用 / 操作符来连接路径
templates_dir = BASE_DIR / 'templates'

# 以上是自行添加的部分

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': 'templates_dir', #需修改
'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',
],
},
},
]

看看是否可行,不可行回来找其他方案

参考文献:https://blog.csdn.net/liaoqingjian/article/details/143662285

templates 目录下新建 login.html,将我的页面贴过来。

打开 Demo1219_2-> settings.py , 找到 INSTALLED_APPS 模块加以修改(33行左右)

1
2
3
4
5
6
7
8
9
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls', # 这里需要添加的一行
]

连接服务器,打开网站 127.0.0.1:8000/polls/ ,看到你的html网页即是连接成功

由于 PyCharm Community Edition 不支持 css 文件,一怒之下改用最爱的 VSCode!!!

但是此时无法载入同级目录的 css 文件

如图所示,在 polls 目录下创建 static 文件夹并生成上述四个文件,在 css 文件夹里放入 login_styles.css ,并进行配置。

在 settings.py 中的 TEMPLATES/OPTIONS 添加

1
'builtins':['django.templatetags.static'],

形式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': 'templates_dir',
'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',
],
'builtins':['django.templatetags.static'], # 添加的部分
},
},
]

若没有报错,重新连接服务器,打开网站 127.0.0.1:8000/polls/ ,即可得到具有 css 格式的页面。

__参考文献__:https://blog.csdn.net/Hjh1906008151/article/details/125477399

使用 get 和 post 做登录功能

GET

找到登陆界面的 form 标签处,添加内容:

1
<form action="/polls/index" method="get">

打开 polls -> views.py 中加入:

1
2
3
4
5
6
7
8
def Login_view(request):
u = request.GET.get("register-email",'')
p = request.GET.get("register-password",'')

if u and p:
return HttpResponse("登陆成功!")
else:
return HttpResponse("登陆失败!")

这里的 GET 对应 html 里 input 标签里的 name=””

1
2
3
4
5
6
7
8
9
10
11
<form id="register-form" action="/polls/index" method="get">
<div class="form-group">
<label for="register-email">电子邮箱</label>
<input type="email" id="register-email" name="register-email" required>
</div>
<div class="form-group">
<label for="register-password">密码</label>
<input type="password" name="register-password" required>
</div>
<button type="submit" class="btn">登录</button>
</form>

打开路由 polls -> urls.py 里的 urlpatterns 模块里加入

1
path('index/',views.Login_view)

连接服务器报错,编译器不认识 HttpResponse

在 polls -> views.py 上面添加

1
from django.shortcuts import HttpResponse

参考文献:https://blog.csdn.net/weixin_42263536/article/details/128706642

修改 polls -> views.py 12行左右为

1
if u=="1789548110@qq.com" and p=="123456":

可以实现指定用户登录。

POST

修改 polls -> views.py 中的 GET 改为 POST

1
2
u = request.POST.get("register-email",'')
p = request.POST.get("register-password",'')

并在 login.html 里 form 标签之下添加

1
{% csrf_token %}

单纯改为 POST 传值不可行,添加这段代码的目的是在下图位置进行操作,有利于保证安全性

登陆操作连接数据库

  1. polls -》model.py 添加数据模型

    1
    2
    3
    4
    class UserInfo(models.Model):
    user_id = models.CharField(primary_key=True,max_length=20)
    user_email = models.CharField(max_length=100)
    user_pwd = models.CharField(max_length=20)
  2. 将数据模型迁移到数据库

    1
    2
    3
    4
    5
    python manage.py makemigrations polls # polls为应用名
    # 创建迁移文件
    # 生成 polls -》0001_initial.py 成功后,执行生成数据库文件
    python manage.py migrate
    # 看到OK提示即为生成成功

    ​ 查看数据库 dbdata1219 表目录中生成 polls_userinfo 表即为成功

  3. 确保数据库里存在数据

    在polls_userinfo表内填入任意用户信息

  4. 编写判断逻辑

​ polls -》views.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from django.shortcuts import render
from django.shortcuts import HttpResponse
from .models import * #数据库内容登录判断

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

def Login_view(request):
u = request.GET.get("login-name",'') # 事先修改了html登录页面上传数据名
p = request.GET.get("login-password",'') # 事先修改了html登录页面上传数据名

# 登录判断逻辑
if u and p:
c = UserInfo.objects.filter(user_name=u,user_pwd=p).count()
if c>=1: # 数据库账号密码匹配成功
return HttpResponse("登录成功!")
else: # 数据库账号密码匹配不成功
return HttpResponse("账号密码错误!")
else: # 账号密码没有都输入
return HttpResponse("请输入正确的账号密码!")

刷新保存表格连接数据库就可以根据第三步填写的用户信息实现登录

新页面上传

以 index.html 主页上传为例

将 index.html 文件复制到 polls -> templates 目录下

修改 head 标签中的相应部分为

1
<link rel="stylesheet" href="{% static 'css/styles.css' %}">

将 index.html 链接的 styles.css 文件复制到 polls -> static -> css 目录之下

view.py 添加页面显示函数

1
2
def mainPage_view(request):
return render(request,'index.html')

urls.py 配置(修改)路由

1
path('index/',views.mainPage_view),

实现注册功能

添加注册页面

views.py 添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 渲染注册界面
def toRegister_view(request):
return render(request,'register.html')

# 点击注册后做的逻辑判断
def Register_view(request):
u = request.GET.get("register-name",'')
p1 = request.GET.get("register-password1",'')
p2 = request.GET.get("register-password2",'')

if u and p1==p2 : # 如果两者正常输入,将输入的用户名密码保存到数据库
user = UserInfo(user_name=u,user_pwd=p1)
user.save()
return HttpResponse("注册成功!")
else:
return HttpResponse("注册失败,请重试!")

配置路由:urls.py

1
2
path('toregister/',views.toRegister_view),
path('register/',views.Register_view),

未完待续……

注:本篇为B站视频 https://www.bilibili.com/video/BV1wT4y1j71A/ 的操作笔记以及个人配置过程中的遇到的问题集锦,如有侵权请联系qq3488643420删除

  • 标题: 基于PyCharm+Django+MySql搭建简易Web网站
  • 作者: Cealivanus Kwan
  • 创建于 : 2024-12-19 21:14:55
  • 更新于 : 2025-01-06 12:05:33
  • 链接: https://redefine.ohevan.com/2024/12/19/基于PyCharm-Django-MySql搭建简易Web网站/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
目录
基于PyCharm+Django+MySql搭建简易Web网站