Django个人博客开发之高级优化路由、视图

news/2025/2/19 10:22:48

我们之前已经完成了项目的结构搭建,但是,在Django当中,我们强调的一个重要概念是app,比如Django自带的admin就是一个成功的app典范,那么我们应该如何整理自己的项目结构,才能让我们的app真正的独立出来,我们以之前的OurBlog项目为例:
为了项目的可迁移性,我们将静态文件和模板文件的目录创建到APP的目录下,在app外部,也就是我们项目的根目录下,我们创建一个空的静态文件目录:
在这里插入图片描述
然后在app(Article)当中的static和template当中创建和app同名的目录来存放文件,即static–>Article–>文件,template–>Article–>文件。
在这里插入图片描述
注意,Django在配置完成之后,在项目目录下执行收集静态文件的命令之后,python manage.py collectstatic,会自动检索所有的app的目录,然后将目录下的static目录下的文件收集到指定的路径(这个路径,在settings当中通过STATIC_ROOT来配置)下。所以,为了区分各个app的静态文件,我们将app的静态文件存放到static目录下的app同名下的目录当中。至于template创建和app同名的目录的目的是区分各个APP下同名的HTML文件,比如:
Article/index.html
User/index.html
然后配置settings
OurBlog/OurBlog/settings.py

# ...... 
#安装功能
INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Article', #我们自定义的功能
    'ckeditor', #Django ckeditor的功能
    'ckeditor_uploader', #Django ckeditor的上传功能
)

# ......

#模板配置
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
        ],
        'APP_DIRS': True, #是否搜索app当中的模板目录
        '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_ROOT = os.path.join(BASE_DIR,"static").replace("\\","/") # 这里其实也可以不加这个replace方法,上面已经为我们写好了置换方法

注意,这里我们修改的有这些,其他的配置和之前学习过程当中一样。
然后我们来进行静态文件的收集
命令:python manage.py collectstatic
这里可以在pycharm自带的Teminal下执行,也可以在cmd下切换到项目目录下执行该命令。
在这里插入图片描述
在这里插入图片描述
然后,Django就会把app当中的静态文件放到项目的静态目录下
在这里插入图片描述
这个时候我们的配置完成了,要调整的就是视图当中模板文件的加载和前端文件的渲染了
/OurBlog/Article/views.py

from django.shortcuts import render

def base(request):
    return render(request, "Article/base.html")

def index(request):
    return render(request, "Article/index.html")

def myArticle(request):
    return render(request, "Article/myArticle.html")

def myPicture(request):
    return render(request, "Article/myPicture.html")

def aboutMe(request):
    return render(request, "Article/aboutMe.html")

def connectMe(request):
    return render(request, "Article/aboutMe.html")

在这里我们之前加载的文件是在根目录下的template下,现在修改到了app下,访问的时候也要注意前端样式的加载
在这里插入图片描述
这样我们再次访问页面,就发现已经把app独立的静态目录开发功能编写完成了。
效果如下
在这里插入图片描述
上面完成了静态文件的优化,那么接下来优化路由部分,路由本身优化有两个方向,我们首先来看针对app独立的优化,很简单,在app当中创建独立的路由文件,urls.py
1、 在app当中创建urls
在这里插入图片描述
2、 在app当中的urls当中导入url设置,设定路由

#coding:utf-8

from django.conf.urls import url
from Article.views import *
urlpatterns = [
    url(r'^index/', index),
    url(r'^myArticle/', myArticle),
    url(r'^myPicture/', myPicture),
    url(r'^aboutMe/', aboutMe),
    url(r'^connectMe/', connectMe),
]

3、 在主url当中包含子url

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    #........
url(r'^article/', include('Article.urls')),
    #........
]

4、然后进行访问,如上图的效果

文章来源:https://blog.csdn.net/ALLENsakaru/article/details/84112939
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/638012.html

相关文章

ubuntu12 root账户自动登录

Ubuntu为了系统安全,root帐号的密码是随机的,如果临时需要提升至root权限以执行一些命令,需要使用sudo命令。产线上有几台使用Ubuntu的机器,因为使用者不固定,并且执行程序时需要使 用到root权限,所以需要将…

arduino 土壤温湿度传感器_盘点!六种用于土地墒情监测的传感器

墒,指土壤适宜植物生长发育的湿度。墒情,指土壤湿度的情况。土壤湿度是土壤的干湿程度,即土壤的实际含水量。土壤墒情直接影响着农作物的生长质量和速度。除了土壤墒情,土壤温度、土壤电导率以及土壤氮磷钾、土壤PH值等参数也对作…

Django之url使用小技巧、项目类视图

我先说一下url中踩过的坑 1.url中的’r’是什么意思?例如:url(r^index/, views.index), 正则表达式字符串的开头字母“r”。 它告诉Python这是个原始字符串,不需要处理里面的’/‘反斜杠(转义字符)。 在普通…

云桌面优缺点_云桌面真的是办公最佳选择吗?云桌面的优缺点对比

原标题:云桌面真的是办公最佳选择吗?云桌面的优缺点对比随着社会的多元化发展,我们办公也在逐渐的多元化起来,从传统的用PC办公到平板手机办公和以及被大多数人说是未来办公最佳选择的云桌面办公。云桌面真的是办公最佳选择吗它有…

matplotlib.pyplot中add_subplot方法参数111的含义

2019独角兽企业重金招聘Python工程师标准>>> 下述代码若要运行,得在安装Python之外安装matplotlib、numpy、scipy、six等库,专门来看这篇小贴的朋友应该知道这些库。 import matplotlib.pyplot as plt from numpy import * fig plt.figure()…

wifi卡慢延迟高_家里WiFi特别卡,网络延迟高,可能不是网速的问题

这样的分流就会导致我们在家中使用到的局域网没有宣传的那么多,而仅仅只是其中的一部分而已,往往针对网速太过缓慢的情况,可以找一些专业的人员去检查自己家中的设备之间的设置是否真的完善,并且进行一些专业的检测来检测出真实的…

watchguard防火墙网页版ipsec ssl pptp ××× 配置

watchguard防火墙网页版ipsec ssl pptp 配置转载于:https://blog.51cto.com/winsnet27/1436014

银灰的拳击机器人_明日方舟:银灰画师对新泳装皮肤致歉 年一游果然名不虚传...

明日方舟对于近期公开的即将登场的六星近卫干员银灰的新泳装皮肤,没想到引发了部分博士的争议和不满,借此作为银灰画师的龙崎一老师也正式发表了致歉声明,具体事件的前因后果,这里带来详细的说明。具体事件的起因很简单&#xff0…