记录_Django从安装到搭建网站

2022-07-27,,,

Django安装搭建网站

      • pip安装Django
        • python安装目录下使用cmd
      • 认识Django
        • MVC设计模式(MTV)
        • 路由映射
        • 数据迁移
        • template(渲染界面)
        • 加载静态文件目录(static)
      • 使用django搭建网站
        • 创建django项目
        • 创建supperuser账号
        • 创建app
        • 编写app的model
        • 数据迁移model到sqlite数据库
        • 编写url路径
          • 1.配置目录下的url.py
          • 2.配置users app下的urls.py
        • 配置static和template文件目录
          • 1.配置static文件路径
          • 2.template模板目录(默认已自动配置)
          • 3.添加static目录和template目录
        • 编写form表单验证
          • 1.编写users app下的forms.py
        • 编写view视图
          • 1.配置目录下的view视图(首页的渲染视图)
          • 2.配置users app下的view视图(登录注册)
        • 运行django项目
          • 1.首页
          • 2.管理员登录
          • 3.电网用户注册登录
          • 4.教育用户注册登录
        • github的仓库

pip安装Django

python安装目录下使用cmd

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

跳转python pip

认识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

《记录_Django从安装到搭建网站.doc》

下载本文的Word格式文档,以方便收藏与打印。