话不多说我们直接开始进入正题~~~~~~
什么是django??
Django 是一个基于 Python 的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,使开发Web应用程序变得更加简单和快速。Django提供了许多功能和工具,包括自动化的管理面板、表单处理、认证系统、用户管理、数据库抽象层等,使开发人员能够更专注于业务逻辑的实现。Django还遵循“DRY(不要重复自己)”原则,使得开发更加高效。它被广泛用于构建高质量的Web应用程序和网站。
直接说怎么做不啰嗦了(要看具体内容欢迎去看django官网)
此文章是为了自己巩固学习而写的(只有我能看懂,不推荐看)
进入正题
1. pip install django
2.通过pycharm创建一个django项目 在通过(python manage.py startapp make_me)
3.进入之后
3.1
会出现这几个文件
如果我们不考虑部署服务器的话我们所要操作只有settings和urls文件
settings->整个项目的配置文件(进入settings)
1.注册app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'make_me'#这是我的app
]
2.删除不必要项
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': []
,
'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',
],
},
},
]
删除‘DIRS’中的部分如图
3.修改数据库
我用的是mysql
DATABASES={
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'tea_stu',
'USER': 'root',
'PASSWORD': '031015',
'HOST': '127.0.0.3',
'PORT':3306,
}
}
4.在创建的app下面添加static文件(用来存放静态文件bootsrap去官网里面下载这里我用的是bs3)
5.在app下创建templates文件(存放html文件)
6.在app目录下创建utils(用来存放组件(可以直接使用的))
7.导入必要的库pymysql,mysqlclient等在
在init文件中添加
import pymysql
pymysql.install_as_MySQLdb()
在app(make_me)中我们所要经常操作的是models和views(主要的思路就是在html中写下路由链接-点击跳转到urls中-通过urls中的函数跳转到views视图函数中进行作用,在跳转到html中进行作用)
案例
配置完成之后(让我们来写一个登录页面)
1.通过models.py写自己所需要的表单
# 学生信息
class Stu_Info(models.Model):
stu_name = models.CharField(verbose_name="名字",max_length=32)
stu_age = models.IntegerField(verbose_name="年龄")# 年龄直接使用IntegerField
gender_choice = {
(1,'男'),
(2,'女')
}
stu_gender = models.SmallIntegerField(verbose_name="性别",choices=gender_choice)# 当选择使用的时候直接使用SmallIntegerField来当做字段
stu_address = models.CharField(verbose_name="地址",max_length=64)
stu_high = models.CharField(verbose_name="身高",max_length=32)
stu_weight = models.CharField(verbose_name="体重",max_length=32)
stu_id = models.CharField(verbose_name="学号",max_length=64)
stu_pwd = models.CharField(verbose_name="密码",max_length=32)
通过终端,python manage.py makemigrations 和 python manage.py migrate 进行数据迁移
2.urls页面
3.view页面
# 登录页面
def login_view(request):
return render(request, 'login.html')
# 登录按钮提交后,验证数据库中是否存在用户,存在就跳转主网页
def login_view_submit(request):
if request.method == "POST":#从post里面获取数据
username = request.POST.get("username",'')
password = request.POST.get('password','')
if username and password:
stu = models.Stu_Info.objects.filter(stu_name=username,stu_pwd=password).count()
if stu >= 1:
return render(request,'index.html')
else:
return render(request,'login.html')
return render(request,'login.html')
4.html页面
直接点击进去后的登录页面
后面点击提交之后post请求就会提交(下面会有具体的逻辑)
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background-image: url({% static 'image/img2.jpg' %});
background-size: cover;
}
.login-container {
background-color: #fff;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
width: 400px; /* 修改宽度 */
height: 400px;
margin: 20px; /* 添加外边距 */
}
.login-container h2 {
text-align: center;
}
.login-container form {
display: flex;
flex-direction: column;
}
.login-container form input[type="text"],
.login-container form input[type="password"] {
margin-bottom: 15px;
padding: 10px;
margin-top: 10%;
border-radius: 4px;
border: 1px solid #ccc;
font-size: 16px;
}
.login-container form input[type="submit"] {
margin-top: 20%;
background-color: #007bff;
color: #fff;
border: none;
padding: 10px;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
transition: background-color 0.3s ease;
}
.login-container form input[type="submit"]:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div class="login-container" style="color: blue">
<h2>用户登录</h2>
<form method="post" action="/index/login/">
{% csrf_token %}
<input type="text" name="username" placeholder="Username" required>
<input type="password" name="password" placeholder="Password" required>
<input type="submit" value="Login">
<span style="color: #2aabd2">没有账号?<a href="/register/">去注册</a></span>
</form>
</div>
</body>
</html>
5.逻辑处理
runserver进去之后(由于路由urls中
path('',views.login_view),里面""为空,后面login_view函数为(
def login_view(request):
return render(request, 'login.html')
)所以登录之后直接进入页面login.html)
后面输入信息后就是post请求通过函数
login_view_submit
来判断数据库中的信息来验证