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')
  • 在views中去加载渲染模板

    1.
    from django.template import loader
    template=loader.get_template('xxx')#先把模板加载进来
  • return render(request,'xxx')

    简化版

    渲染好处是可以写一些模板语句进html<br />**render是渲染函数,后面有两个参数①request②应用名**<br />注意这样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行无序列表
最后修改:2024 年 03 月 13 日
如果觉得我的文章对你有用,请随意赞赏