django模块[1] MTV简单流程

urls.py内容简介

urlpatterns


urlpatterns = [

    path('admin/', admin.site.urls),

]

可以看到urlpatterns是一个列表,里面可以添加路由目录
可以看到django自带admin管理,在项目界面后面加admin就能进入管理界面
[http://127.0.0.1:8000/admin/](http://127.0.0.1:8000/admin/) (只有自己本地能打开)

MVC/MTV流程

第一步从浏览器到达我们的路由器,接着路由器交给views视图函数,或者是控制器controller去解决。

添加views路由

我们在urlpatterns里添加路由条目:


from django.contrib import admin

from django.urls import path

from App import views

urlpatterns = [

    path('admin/', admin.site.urls),

    path('hello/', views.hello)

]

注意第3行需要我们自行导入App文件夹中的view.py文件
6行引用views,交给views中的hello函数处理

在views.py添加hello函数:


from django.http import HttpResponse

from django.shortcuts import render

# Create your views here.

def hello(request):

    return HttpResponse("双击666")

接着我们验证结果
打开浏览器输入http://127.0.0.1:8000/hello/
我们可以看到

总结:实现一个请求

注册一个路由

  • urls中:

url:参数
视图函数:对应的是views中的一个函数(函数后面没有括号)

  • 去views实现对应的试图函数:

第一个参数是request,函数名可以不是request,但是要是一个request对象
永远记得返回responese响应

-   httpresponse返回的内容可以是html标签例如<h1>哈哈<h1>也可以是利用os模块调用html文件,但是这些都有点捞,Django是MTV设计模式,所以有专门的T(用户界面设计) 

MTV模式中的T(用户UI)

第一种创建模板

在应用文件夹App下创建templates文件夹(文件夹名固定),文件夹里建立html文件

添加url让temlates中html文件部署至网站

添加index路由


urlpatterns = [

    path('admin/', admin.site.urls),

    path('hello/', views.hello),

    path('hehe/',views.hehe),

    path('index/',views.index),

]

在views添加index函数


def index(request):

    return render(request,'index.html')

render是渲染函数,后面有两个参数①request②应用名
注意这样index.html  pycharm不会自动补齐,需要手动输入

自动补齐操作如下:
标记新建的templates为模板(因为pycharm不会自动识别文件夹为模板)注意:pycharm专业版才有

将App应用添加到settings.py中

否则Django不会识别App中的index目录,访问时会报错


INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'App',

]

这样就能访问index.html

第二种创建模板

新版本在项目目录下已经有了templates模板文件夹,你只需要上传html文件即可

若目录中没有,则需要你手动创建,并且按照第一种创建模板的方式标记文件夹
并且你还需要在settings.py文件中的TEMPLATES中的DIRS中按添加如下内容


'DIRS': [os.path.join(BASE_DIR, 'templates')]

告诉Django templates模板在这里

第一种方法在开发中不常用,在开发中使用的是第二种创建模板方法。

urls优化

一个项目里的views里的函数不宜过多(一个文件打开代码过多,叫上帝文件,因为这个文件啥都能干)
我们可以创建多个项目来分散开来

创建新项目

例如再创建名为two的项目
python manage.py startapp two
创建完一个app之后立马在settings.py文件里面的INSTALLED_APPS注册上


INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

    'App',

    'two',

]

分发路由

接着我们可以分发路由
在two项目里新建urls.py
在里面添加


from django.conf.urls import url

from two import views

urlpatterns = [

    url('index/',views.index)

]

注意导入的两条语句我们可以不用手动输入,先输入urlpatterns=[]的,然后会出现下图的红色波浪线,我们可以alt+enter利用万能键,快速导入补全。

接着我们要去two下的views下添加index函数,我们可以用万能键快速创建

two/views.py如下:


# Create your views here.

from django.http import HttpResponse

def index(request):

    return HttpResponse('老铁双击666')

接着为了让根路由知道我们应用里的子路由,需要在hellodjango里面添加我们的子路由:
注意:根路由是path函数,子路由是url函数


urlpatterns = [

    path('admin/', admin.site.urls),

    path('hello/', views.hello),

    path('hehe/',views.hehe),

    path('home/',views.home),

    path('two/',include('two.urls'))]

如何访问

我们先从总路由访问two,再访问two中的子路由里的index

这样我们就能成功分发路由并且访问了

总结


template只是response响应的一种

image.png

万能键(补全引入框架)

alt+enter

html


ul>li*n   ##快速建立n行无序列表
Last modification:January 29th, 2020 at 09:55 pm
如果觉得我的文章对你有用,可以打赏一瓶汽水钱嗷~