记录_Django从安装到搭建网站
Django安装到搭建网站
pip安装Django
python安装目录下使用cmd
找到python的安装目录下的Script(python3.7自带pip)
我的安装目录
C:\Users\MY\AppData\Local\Programs\Python\Python37\Scripts
打开cmd输入pip install django即可(可以下载相应的django版本)
认识Django
MVC设计模式(MTV)
Model(模型)表示,用程序核心(数据库记录列表)
View(视图)显示数据(数据返回前端界面)
Controller(控制器)处理输入(写入数据库记录)
在Django中还有一种MTV模式,模型(model)、模板(Template)和视图(View),Template中存放前端渲染的代码文件,默认从里面检索前端代码。
路由映射
解析url找到ip地址,匹配urlpatterns中的路径,执行视图函数。
数据迁移
创建完model之后进行数据迁移,在manage.py分别执行migrate和makemigrations命令将model的数据迁移到sqlite数据库中(通过orm对象关系映射)
$ migrate
$ makemigrations
template(渲染界面)
Html页面渲染使用通常使用render、redirect、reverse
render()方法常用的三个参数,一是request参数,而是待渲染的HTML的文件,三是保存具体数据字典的参数,redirect()页面跳转,reverse()重定向。
render中的第三个参数locals()可以直接将函数中所有的变量全部传给模板。当然这可能会传递一些多余的参数,不推荐使用。
加载静态文件目录(static)
在配置文件添加静态文件目录
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
使用django搭建网站
创建django项目
创建一个democase,demo的app
创建成功运行,说明配置没问题
创建supperuser账号
打开manage.py
$ create superuser
登录管理后台
访问 http://127.0.0.1:8000/admin
登录管理员后台成功
创建app
$ startapp users
在配置文件添加创建的app名
编写app的model
为了实现登录注册,创建一个普通用户的实体(继承超级管理员)
编写users下的model.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
#用户
class Users(User):#继成开发人员的User
User.is_superuser = True
User.is_staff = True#可以登录
Users_job = models.CharField(max_length=10,null=True,default='普通')#用户类型
publish = models.DateTimeField(default=timezone.now)
# 当前时间自动存储
class Metal:
ordering=("-publish",)#反向查找
admin管理后台添加model
from django.contrib import admin
from .models import *
admin.site.register(Users)
数据迁移model到sqlite数据库
分别执行makemigrations和migrate
- makemigrations 命令查找所有可用的models,为任意一个在数据库中不存在对应数据表的model创建 migrations 脚本文件。
- migrate 命令则运行这些 migrations 自动创建数据库表。
数据迁移后查看管理后台
编写url路径
1.配置目录下的url.py
from django.contrib import admin
from django.urls import path,include
from democase import views
urlpatterns = [
path("",views.index),
path('admin/', admin.site.urls),
path('user/',include('users.urls')),#匹配users
]
2.配置users app下的urls.py
from django.contrib import admin
from django.urls import path
from users import views
#,usersownviews
app_name = 'users'
urlpatterns = [
path('register/',views.Register,name='register'),#注册
path('login/',views.Login,name='login'),#登录
path('Super/edu<str:username>',views.Superuser_edu,name='edu'),#超级管理员
path('Super/elc/<str:username>',views.Superuser_elctric,name='elc'),#超级管理员
]
配置static和template文件目录
1.配置static文件路径
#静态文件的加载
STATIC_URL = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
2.template模板目录(默认已自动配置)
3.添加static目录和template目录
编写form表单验证
1.编写users app下的forms.py
from django import forms
from .models import *
from django.contrib.auth.models import User
#登录用
class LoginForm(forms.Form):
username=forms.CharField()
#表单用户名
password=forms.CharField(widget=forms.PasswordInput)
#表单用户密码
#注册用
class RegisterForm(forms.ModelForm):
class Meta:
model=Users
#与创建的用户模型匹配
fields=('username','password','Users_job')
#填写需要的属性
编写view视图
1.配置目录下的view视图(首页的渲染视图)
from django.shortcuts import render
def index(request):
return render(request,'index.html')
2.配置users app下的view视图(登录注册)
from django.shortcuts import render, redirect, reverse # 重定向
from django.views.decorators.csrf import csrf_protect
from .models import Users
from users import forms as Userform
# 用户注册
@csrf_protect
def Register(request):
if request.method == 'POST':
print('post')
User_form=Userform.RegisterForm(request.POST)#post大写切记
print(User_form)
if User_form.is_valid():#验证是否合法
new_user=User_form.save(commit=False)#保存
print(new_user)
new_user.save()
data={'user':new_user}#传入参数
return render(request,'userspage.html',data)#注册成功直接登录
else:
print('不合法')
return render(request, 'register.html')#重新注册
return render(request, 'register.html')
#登录
@csrf_protect
def Login(request):
print('登录函数')
if request.method == 'POST':
User_form = Userform.LoginForm(request.POST) # post大写切记
if User_form.is_valid():
u_name=User_form.cleaned_data.get('username')
u_pwd=User_form.cleaned_data.get('password')
try:
u_have=Users.objects.get(username=u_name,password=u_pwd)
except Exception as e:
print(e)#没有该用户
return render(request, 'login.html')
print(u_have)
data = {'user': u_have} # 传入参数
if u_have.is_superuser:
return render(request,'superuserpage.html',data)
return render(request,'userspage.html',data)#注册成功直接登录
else:
return render(request, 'login.html')#不合法
return render(request, 'login.html')
def Superuser_edu(request,username):
user=Users.objects.get(username=username)
data = {'user': user} # 传入参数
return render(request,'super_edu.html',data)
def Superuser_elctric(request,username):
user=Users.objects.get(username=username)
data = {'user': user} # 传入参数
return render(request,'super_electric.html',data)
运行django项目
1.首页
2.管理员登录
管理员可以查看电网和就业的仪表盘
3.电网用户注册登录
只能查看电网的仪表盘
4.教育用户注册登录
只能查看就业分布的仪表盘
github的仓库
本文地址:https://blog.csdn.net/qq_38870145/article/details/109881439