Loading

Django的路由关系与静态资源路径设置

以下均在django版本2.2以下:

这里解决两个django问题,如标题所见,这里在详细说明一下,网上教程版本层次不齐。迷惑之处url

究竟要怎么安排,怎么写,不同url文件之间关系;另一个问题,静态文件static和templates两个文件怎么弄。

1. 路由问题

先来理解路由,简单来说就是站点关系一层套一层,最好理解的例子就是,你把它理解成电脑的文件目录。这里举例,后面所有都以此为基础(一个项目中两个app的例子):

  1. 你创建了一个项目名字为project
  2. 你创建了一个app1
  3. 你又创建了一个app2

接下来看一下现在的文件关系:

image-20210908204621864

我们第一步先将project/project/url分别复制到/project/app1和/project/app2下各一份,原来的不要删除,这样青色的urls理解为根urls,两外两个理解为两个子urls,现在开始修改内部

# 根urls
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('app1/',include('app1.urls'),name='app1'),
    path('app2/', include('app2.urls'), name='app2'),
]

另外两个

# app1相同app2,将下面app1修改即可
from django.contrib import admin
from django.urls import path
from app1 import views

urlpatterns = [
    path('home/', views.home, name="home"),
    path('web1/', views.inputs, name="web1"),
    path('web2/', views.ana, name='web2')
]

如果你想访问app1的web2网页,只需要在127.0.0.1后面加/app1/web2即可。

2. 静态static与templates

在根目录下(/project)创建static文件夹和templates文件夹,然后打开/project/project/settings.py来设置静态资源目录:

(至于settings中添加app之类的这里不再赘述,这里只说怎么修改关于静态资源的地方)

  1. 添加static-file默认路径(新起一行,加在哪里都行)
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
  1. 修改templates目录(注意不是新加,是修改)
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
        },
    },
]

!末尾有一个static-url的配置,不要删掉它!

下面是如何在html和views中使用路径:

image-20210908210818641

如果你在app的views.py中调用,使用“static/images/back.png”路径注意“/”什么时候有,什么时候没有。html文件中调用图片,使用路径“/static/images/back.png”,依然注意“/”的有无。

(★注意部署后才能加载图片,如果你直接本地打开html文件他是不会加载图片的,因为它会按照绝对路径或者相对路径来寻找,是找不到的!!)

posted @ 2024-09-19 14:04  绯色鱼  阅读(93)  评论(0)    收藏  举报