欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

记录_Django从安装到搭建网站

程序员文章站 2022-04-07 14:09:18
Django搭建小站MVC设计模式(MTV)路由映射数据迁移template(返回html)用户实体model注册函数view登录函数view加载静态文件MVC设计模式(MTV)Model(模型)表示,用程序核心(数据库记录列表)View(视图)显示数据(数据返回前端界面)Controller(控制器)处理输入(写入数据库记录)在Django中还有一种MTV模式,模型(model)、模板(Template)和视图(View),Template中存放前端渲染的代码文件,默认从里面检索前端代码。//...

pip安装Django

python安装目录下使用cmd

找到python的安装目录下的Script(python3.7自带pip)
我的安装目录
C:\Users\MY\AppData\Local\Programs\Python\Python37\Scripts
打开cmd输入pip install django即可(可以下载相应的django版本)
记录_Django从安装到搭建网站

跳转python pip

认识Django

MVC设计模式(MTV)

Model(模型)表示,用程序核心(数据库记录列表)
View(视图)显示数据(数据返回前端界面)
Controller(控制器)处理输入(写入数据库记录)
在Django中还有一种MTV模式,模型(model)、模板(Template)和视图(View),Template中存放前端渲染的代码文件,默认从里面检索前端代码。
记录_Django从安装到搭建网站

路由映射

解析url找到ip地址,匹配urlpatterns中的路径,执行视图函数。
记录_Django从安装到搭建网站

记录_Django从安装到搭建网站

数据迁移

创建完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
记录_Django从安装到搭建网站
创建成功运行,说明配置没问题
记录_Django从安装到搭建网站

创建supperuser账号

打开manage.py
记录_Django从安装到搭建网站

 $ create superuser

记录_Django从安装到搭建网站
登录管理后台
访问 http://127.0.0.1:8000/admin
记录_Django从安装到搭建网站
登录管理员后台成功
记录_Django从安装到搭建网站

创建app

$ startapp users

记录_Django从安装到搭建网站
在配置文件添加创建的app名
记录_Django从安装到搭建网站

编写app的model

为了实现登录注册,创建一个普通用户的实体(继承超级管理员)
记录_Django从安装到搭建网站

编写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)

记录_Django从安装到搭建网站

数据迁移model到sqlite数据库

分别执行makemigrations和migrate

  • makemigrations 命令查找所有可用的models,为任意一个在数据库中不存在对应数据表的model创建 migrations 脚本文件。
  • migrate 命令则运行这些 migrations 自动创建数据库表。

记录_Django从安装到搭建网站
数据迁移后查看管理后台
记录_Django从安装到搭建网站

编写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
]

记录_Django从安装到搭建网站

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'),#超级管理员
]

记录_Django从安装到搭建网站

配置static和template文件目录

1.配置static文件路径
#静态文件的加载
STATIC_URL = '/static/'
STATICFILES_DIRS=(
    os.path.join(BASE_DIR,'static'),
)

记录_Django从安装到搭建网站

2.template模板目录(默认已自动配置)

记录_Django从安装到搭建网站

3.添加static目录和template目录

记录_Django从安装到搭建网站

编写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')
        #填写需要的属性

记录_Django从安装到搭建网站

编写view视图

1.配置目录下的view视图(首页的渲染视图)
from django.shortcuts import render
def index(request):
    return render(request,'index.html')

记录_Django从安装到搭建网站

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从安装到搭建网站

运行django项目

1.首页

记录_Django从安装到搭建网站

2.管理员登录

管理员可以查看电网和就业的仪表盘
记录_Django从安装到搭建网站

3.电网用户注册登录

只能查看电网的仪表盘
记录_Django从安装到搭建网站

4.教育用户注册登录

只能查看就业分布的仪表盘
记录_Django从安装到搭建网站

github的仓库

代码

本文地址:https://blog.csdn.net/qq_38870145/article/details/109881439