使用Django快速搭建web网站 | 实现简单注册登录功能
条评论前言
最近抄了个html+css+js实现的影视页面,想用后端实现动态加载内容,但是学习时间不够。之前毕设用到了Django,所以打算重新捡起之前的知识,用Django作为影视网站的后端(还自带后台管理系统),顺便做好笔记防止再次遗忘。
本篇参考教程:20分钟快速用django+mysql+pycharm搭建一个自己的web网站
环境准备
Django的使用需要用到Python、Pycharm、MySQL、Navicat(可选)等。
Python 3.12.2
下载:打开官网->点击downloads -> all releases -> 选择版本,点击download(旧版本3.10不支持下载了,目前最新为3.12.2版本)->在下方的Flies里选择Windows installer (64-bit) 【点此下载】
安装:打开安装包 -> 勾选下面两个配置,选择Customize installation->点击Next,自定义安装位置,点击Disable Path Length Limit。
注意:自定义路径记得多加上一层文件夹,安装完别移动,否则自动添加的环境变量可能失效,安装程序也无法卸载移动后的程序。
在cmd中,输入 python
和pip -V
,如果能看到版本信息则配置成功。
1 | C:\Users\Administrator>pip -V |
PyCharm Community Edition
官网地址:https://www.jetbrains.com/pycharm/
下载:打开官网,点击Download,滑动到下方,下载PyCharm Community Edition(社区版免费使用),点此下载
安装:打开安装包->自定义安装路径,全勾选,安装即可
MySQL 8.3.0
下载:点击此链接 下载最新版msi文件
安装:请阅读 全网最简单的Mysql 8.3 安装及环境配置教程
- 安装:双击,Typical,…选择安装路径…密码建议root,Sample Databases可选勾选创建,点击Copy Log to Clipboard,Finish。
- 配置:按win键打开MySQL并登录。win+R 打开services.msc,找到并双击MySQL83,复制到bin路径。按win搜
编辑系统环境变量
,修改环境变量,在系统变量-path中添加刚才复制的bin路径,三次确定完成配置。按win搜cmd,管理员身份打开,输入mysql -V
显示版本则安装成功。
Navacat 16
Navicat用来可视化操作数据库数据。
脚本之家破解版安装教程:https://www.jb51.net/database/710931.html
创建Django项目
打开终端,cd进入自定义的Django文件夹
1 | mkdir D:\Coding\djangoProject |
安装虚拟环境工具:
1 | pip install virtualenv |
创建虚拟环境:
1 | virtualenv env |
激活虚拟环境(虚拟环境env会自带python和pip):
1 | env\scripts\activate |
不创建虚拟环境则 pip install 默认会安装到 G:\python-3.10.3\Scripts
使用虚拟环境的好处是每个项目有各自相互隔离的独自的依赖库,不会相互影响,并且能将项目与其环境隔离开来方便管理。
创建的env自带python和pip工具
在env中安装Django:
1 | pip install django |
创建Django项目:
1 | django-admin startproject mysite |
停用虚拟环境:
1 | env\scripts\deactivate |
将env
文件移动到D:\Coding\djangoProject\mysite
里,用Pycharm打开mysite
文件夹。
在左下角打开Terminal(注意左侧是否有env启动标志),输入命令启动项目:
1 | python manage.py runserver |
在浏览器打开http://127.0.0.1:8000/
,能看到小火箭则项目成功启动。在下方可以查看文档和官方入门教程。
在Terminal中按ctrl + c
可关闭项目。
【小火箭的图】
创建自己的网站应用
打开settings.py
,在最下方设置语言和时区
1 | LANGUAGE_CODE = 'zh-hans' |
Django项目由多个应用组成,每个应用负责一个业务。这里创建movies应用,负责影视网站的业务。
创建APP:
1 | python manage.py startapp movies |
在settings.py中注册APP:
1 | INSTALLED_APPS = [ # 都是Django内置的一些功能,依赖于Django的表 |
修改mysite的urls.py文件内容如下:
1 | # mysite/urls.py |
新建movies的urls.py内容如下:
1 | # movies/urls.py |
修改movies的views.py内容如下:
1 | from django.shortcuts import render |
创建模板:在movies文件夹下创建templates文件夹用来存放模板
编写模板:在templates模板下创建login.html并编写登录界面
1 | <head> |
配置模板路径:在settings.py的TEMPLATES的DIR一行改为:
1 | 'DIRS': [os.path.join(BASE_DIR, 'templates')], |
并在顶部添上import os
防止报错
此时启动项目,打开http://127.0.0.1:8000/movies/ 能看到login.html页面
MTV概念
MTV 是 Django 框架中的一个核心概念,它是一种基于模型(Model)、模板(Template)、视图(View)的设计模式,用于构建 Web 应用程序,与MVC模式相近。
简单来讲:
- 模型(Model):定义数据结构和行为,通常由 Python 类表示,与数据库中的表相对应。
- 视图(View):处理用户请求的逻辑,接收 HTTP 请求并返回 HTTP 响应,负责将模型和模板之间的交互结合起来。
- 模板(Template):表示用户界面的呈现,包含 HTML 结构和 Django 模板语言,用于动态地将数据呈现给用户。
【MTV的图】
在上面的例子中,浏览器访问网站时,通过mysite的urls匹配到’/movies’,转到movies的urls中,匹配到’’,通过movies的views中的toLogin_view视图来处理请求逻辑,即渲染login.html并返回给浏览器,由于还没用到数据库,所以没有涉及Model。
ORM概念
Django引入了ORM的概念(全称Object Relational Mapping,即对象关系映射),对于与数据库的交互,我们无需再去编写原生sql,取代代之的是基于面向对象的思想去编写类、对象、调用相应的方法等,ORM会将Model里的Python代码转换/映射成为 SQL 语句,SQL 语句通过 pymysql 传送到数据库服务端,在数据库中执行 SQL 语句并将结果返回。
了解相关知识请阅读:Django之ORM
【ORM的图】
通过编写Model的代码,ORM框架自动将代码转换为对应的sql语句。开发人员无需考虑SQL的优化和数据库迁移问题,ORM都帮我们做好了优化且支持多种数据库,大大的提升了开发效率。
连接到MySQL数据库
通过pymysql模块连接
1.安装pymysql模块
在左上角Main Menu->File->Settings-> Project: mysite -> Python Interpreter
,这里可以看到当前项目的env里已安装的依赖
点+号 -> 输入pymysql -> 点击下方install package
(以上两步也可以在Terminal里输入 pip install pymysql实现)
2.生成数据库
打开Navicat->连接->MySQL,连接名自定义,密码为root,确定。双击连接名激活后Navicat成功连接MySQL
右击连接名,新建数据库,库名 mysite,字符集 utf8mb3,排序规则utf8_general_ci(库内不区分大小写)
(以上两步也可以打开MySQL Command Line Clint通过create database mydb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
指令创建数据库)
3.Django连接MySQL数据库
修改项目文件mysite/settings.py中DATABASES的内容,设置连接MySQL数据库(Django默认使用的是sqllite数据库)
1 | DATABASES = { |
修改 mysite/init.py 文件,告诉Django使用 pymysql 模块连接MySQL数据库
1 | import pymysql |
这样mysite项目就连接上了MySQL中的 mysite 数据库。在Terminal中按ctrl+c
先关闭正在运行的项目
(以上还可以用mysqlclient模块连接,似乎效果更好)
4.数据迁移,创建管理员账号并进入后台
然后执行迁移,将项目中原有的应用的模型同步迁移到数据库
输入 py manage.py migrate
,此时就把项目中自带的应用的模型映射到了数据库中
输入 py manage.py createsuperuser
创建项目的管理员账号(默认账户名为administrator)
重新启动项目,输入网址:http://127.0.0.1:8000/admin 就进入了Django自带的后台登录界面
设计模型、模板和视图
前面创建项目并连接上数据库,可以成功进入登录界面
接下来就是设计登录注册界面及其业务逻辑
直接贴代码:
login.html
1 |
|
register.html
1 |
|
csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。需要在form表单里加上。
movies/urls.py
1 | from django.urls import path |
movies/models.py
1 | from django.db import models |
执行指令,将数据模型迁移到数据库:
1 | py manage.py makemigrations polls |
此时,用Navicat查看,mysite数据库中会多出一张movies_userinfo表
往里面输入数据,登录时会将账号密码与表内数据进行配对,不正确则无法登录
注册时,正确输入账号密码后,会在表内增加一条数据。
movies/views.py
1 | from django.http import HttpResponse |
视图显示和请求处理都分成两个函数处理。
最后,启动项目,进入 http://127.0.0.1:8000/movies/ 查看效果
以上是所有内容:
- 创建Django项目
- 连接mysql 并创建数据库
- 设计登录注册界面并且能和数据库交互进行判断
Django的模型可以映射到数据库中。反过来,数据库也可以反映射到model.py中输入指令:
py manage.py inspectdb > movies/models.py
然后打开model.py可以看到,数据库中的数据表输出为Model
本文标题:使用Django快速搭建web网站 | 实现简单注册登录功能
文章作者:德德
发布时间:2024-06-17
最后更新:2024-06-17
原始链接:https://lumengde123.github.io/posts/1ea.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!