Python Web框架——Django学习的第二天

一:安装和创建一个Django项目

1.安装Django包

pip install django

2.创建一个Django项目的命令
django-admin startproject +(文件名称)

django-admin startproject  my_site

3.运行Django文件
注意:该命令必须在你创建的Django文件目录下,即manage.py的上一级文件目录下

python manage.py runserver

请记住Django项目没有停止命令,他会一直运行,即使你修改文件,它会自动保存,并做出修改。
注意:使用上面的命令所开启的服务的端口号,是8000,更改端口号的方法是:

python manage.py runserver 0.0.0.0:8001

4.对已经创建的Django项目内自动创建的文件做出分析

mysite

  manage.py          #管理程序的文件,启动和结束等。
  
  my_site
         _init_.py
         settngs.py      #程序的配置文件,内含模块
         urls.py    #程序的路由系统,即:url和处理其函数的对应关系
         wsgi.py   #指定框架的wsgi

二:完成第一个Django请求

1.创建app(这是Django项目运行的必须一步)

创建命令是:

django-admin  startapp app01

分析app内的文件结构以及作用

app01

    _init_.py包
    admin.py 数据库后台
    app.py   #django 把项目与app 关联起的文件
    migrations     #与数据库相关
           _init_.py
    model.py #数据库操作地方
    tests.py  #单元测试
    views.py   #业务逻辑代码

2.完成第一个Django的请求
(1)匹配路由 ,路由分发器查找用户请求的url地址
1.找到了业务函数,就调用
2.找不到就报404
(2)业务函数,执行业务逻辑‘
(3)返回数据给游览器

执行一个最简单的django的请求,首先要在路由分发器文件中,增加一个路由即(urls.py)文件
urls.py代码:

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('login/',views.view_login)
]

接下来在视图层将发送数据给游览器
views.py文件

from django.shortcuts import render,HttpResponse

# Create your views here.

# views.py文件中的所有函数,方法的参数必须是request
# request表示接收游览器返回服务器的数据
def view_login(request):
    
    print("该业务已经执行到这里")
    print(dir(request))
    return HttpResponse("<h1 style='color:red'>人不度人天渡人</h1>")

三:将一个html文件传输到前端

第一步:是在urls.py文件中定义一个路由,和创建一个存放html文件的文件夹

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('test',views.test_view),
    path('loginIn',views.login_view)
]

login.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册登录界面</title>
</head>
<body>
<div class="container right-panel-active">
    <!-- 注册 -->
    <div class="container_form container--signup">
        <form action="#" class="form" id="form1">
            <h2 class="form_title">Sign Up</h2>
            <input type="text" placeholder="User" class="input" />
            <input type="email" placeholder="Email" class="input" />
            <input type="password" placeholder="Password" class="input" />
            <button class="btn">Sign Up2</button>
        </form>
    </div>

    <!-- 登录 -->
    <div class="container_form container--signin">
<!--        <form action="#" class="form" id="form2">-->
<!--            <h2 class="form_title">Sign In</h2>-->
<!--            <input type="text" placeholder="Useranme" id="username" class="input" />-->
<!--&lt;!&ndash;            <input type="text" placeholder="Username" id="username" class="input" />&ndash;&gt;-->
<!--            <input type="password" placeholder="Password" id="password" class="input" />-->
<!--            <button class="btn" onclick="fff()">Sign In1</button>-->
<!--        </form>-->
<!--        注意注意注意-->
        <form action="/index" class="form">
            <h2 class="form_title">Sign In</h2>
            <input type="username" placeholder="Useranme" id="username" class="input" />
            <!--            <input type="text" placeholder="Username" id="username" class="input" />-->
            <input type="password" placeholder="Password" id="password" class="input" />
            <button class="btn" >Sign In1</button>
<!--            <button type="submit" onclick="fff()">sign in</button>-->
        </form>


    </div>

    <!-- 浮层 -->
    <div class="container_overlay">
        <img  class="container_overlay_img">
        <div class="overlay">
            <div class="overlay_panel overlay--left">
                <button class="btn" id="signIn">Sign In</button>
            </div>
            <div class="overlay_panel overlay--right">
                <button class="btn" id="signUp">Sign Up</button>
            </div>
        </div>
    </div>
</div>

<!-- 背景 -->
<div class="slidershow">
    <div class="slidershow--image" style="background-image: url('https://source.unsplash.com/Snqdjm71Y5s')"></div>
    <div class="slidershow--image" style="background-image: url('https://source.unsplash.com/5APj-fzKE-k')"></div>
    <div class="slidershow--image" style="background-image: url('https://source.unsplash.com/wnbBH_CGOYQ')"></div>
    <div class="slidershow--image" style="background-image: url('https://source.unsplash.com/OkTfw7fXLPk')"></div>
</div>

</body>
</html>

第二步:::重点!重点!重点!
Django框架在settings.py文件定义了固定的模板,负责处理html文件

BASE_DIR = Path(__file__).resolve().parent.parent
#BASE_DIR拿到该项目的根路径
TEMPLATES = [    #模板,处理html文件夹
    {
    
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #请注意该路径必须使用绝对路径,相对路径会找不到
        'DIRS': [os.path.join(BASE_DIR,"html")],  #html文件夹的位置
        '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',
            ],
        },
    },
]

第三步:找到html文件,打开读取
在views.py文件中定义一个函数要与urls.py文件中调用的函数命名相同

from django.shortcuts import render,HttpResponse

# Create your views here.

# views.py文件中的所有函数,方法的参数必须是request
# request表示接收游览器返回服务器的数据
def view_login(request):

   return render(request,'login.html')

四:WEB开发的套路

1.MVC
MVC是一种使用MVC(Model View Controller 模型-试图-控制器)设计创建web应用程序的模式

  1. Model(模型)一般对应数据库操作,记录的存取
  2. View(试图)决定这如何展示数据
  3. Controller(控制器)负责处理用户交互的部分,控制器负责从试图的去数据,控制用户输入,并向模型发送数据。

在这里插入图片描述
2.MTV
Django是一个MTV框架,其看上去与MVC传统的MVC架构并没有太大的区别。
Django将MVC中的视图进一步分解为Django试图和Django模板两部分,分别决定“展现哪些数据”和“如何展现”,是的Django的模板可以根据需要随时替换,而不仅仅限制于内置的模板,至于MVC控制器部分,由Django框架的URLconf来实现.
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51269815/article/details/121743221