django的静态文件配置和路由控制
上一篇写到刚建完django项目,此时我登录页面中调用了js文件,执行后发现报错了找不到js这个文件
目录结构如图所示:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script src="/statics/js.js">
- </script>
- </head>
- <body>
- <h4>
- 登录页面
- </h4>>
- <form action="" method="post">
- 用户名<input type="text" name="user">
- 密码<input type="password" name="pwd">
- <input type="submit">
- </form>
- </body>
- </html>
显示找不到这个js文件
那么问题来了,我们应该怎么获取这个静态js文件呢?别急和我来一步一步配置
在django的公共项目目录中有一个settings.py的文件
在这个文件中配置一个STATICFILES_DIRS变量,配置好这个STATICFILES_DIRS后,django中就会把statics目录下的文件路径改成static
- LANGUAGE_CODE = 'en-us'
- TIME_ZONE = 'UTC'
- USE_I18N = True
- USE_L10N = True
- USE_TZ = True
- # Static files (CSS, JavaScript, Images)
- # https://docs.djangoproject.com/en/2.2/howto/static-files/
- STATIC_URL = '/static/' # django自带的
- STATICFILES_DIRS = [
- os.path.join(BASE_DIR, 'statics'),
- ]
配置完参数后,html中引用的js路径改为/static/js/js
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <script src="/static/js.js">
- </script>
- </head>
- <body>
- <h4>
- 登录页面
- </h4>>
- <form action="" method="post">
- 用户名<input type="text" name="user">
- 密码<input type="password" name="pwd">
- <input type="submit">
- </form>
- </body>
- </html>
再次执行接口,就找到这个js文件了
接下来讲一下路由配置,首先讲一下路由控制之简单配置
项目目录为:
在公共配置中的urls中添加路由配置
- from django.contrib import admin
- from django.urls import path, re_path
- from website import views
- urlpatterns = [# 路由配置 路径--------》视图函数
- re_path(r'^articles/2003/', views.special_case_2003),
- re_path(r'^articles/([0-9]{4})/$', views.year_archive),
- re_path(r'^articles/([0-9]{4})/([[0-9]{2})/$', views.month),
- ]
在单独项目对应的views(视图)文件中添加对应的视图函数
- from django.shortcuts import render, HttpResponse
- import time
- # Create your views here.
- def special_case_2003(request):
- return HttpResponse('special_case')
- def year_archive(request, year):
- return HttpResponse(year)
- def month(request, year, months):
- return HttpResponse(year, months)
situation 1:
输入url为:http://127.0.0.1:8000/articles/2003/
输出结果为:
situation 2:
输入url为:http://127.0.0.1:8000/articles/2004/
输出结果为:
situation 3:
输入url为:http://127.0.0.1:8000/articles/2005/20/
输出结果为:
这里有个注意点需要强调一下!!!
当你的路由中有元组时,在对应的视图函数中就要加上一个对应的位置参数,这点很重要,否则就会报错。
- rom django.contrib import admin
- from django.urls import path, re_path
- from website import views
- urlpatterns = [
- path('admin/', admin.site.urls),
- # 路由配置 路径--------》视图函数
- re_path(r'^articles/2003/', views.special_case_2003),
- re_path(r'^articles/([0-9]{4})/$', views.year_archive), # 比如这个路径有一个元祖,在对应的year_archive中就需要对应的传一个位置参数
- re_path(r'^articles/([0-9]{4})/([[0-9]{2})/$', views.month), # 这条也是
- ]
- def year_archive(request, year): # 位置参数year
- return HttpResponse(year)
- def month(request, year, months): # 位置参数year和months
- return HttpResponse(months)
接下来讲下路由控制之有名分组
背景:当视图函数中的参数很多时,参数顺序很容易报错,这时就可以用到有名分组了。
- 路由控制:
- re_path(r'^articles/(?P<y>[0-9]{4})/(?P<m>[[0-9]{2})/$', views.month)
- 对应的视图函数:
- def month(request, m, y): # 这里必须要传y和m,否则会报错
- return HttpResponse(y+'+'+m)
此时不管交换m和y的位置,对应的值都不会改变。
路由控制之分发
背景:之前写的路由都是写在全局中的,如果我有十几个应用我该怎么办?难道都写在全局中吗?显然不太现实,此时就要用到分发,把路由结偶。
1.先在自己的应用中创建一个urls文件,把对应的路由都写好。
- from django.urls import path, re_path
- from website import views
- urlpatterns = [
- # 路由配置 路径--------》视图函数
- re_path(r'^articles/2003/', views.special_case_2003),
- re_path(r'^articles/([0-9]{4})/$', views.year_archive),
- re_path(r'^articles/(?P<y>[0-9]{4})/(?P<m>[[0-9]{2})/$', views.month),
- ]
2.在全局的urls文件中导入include
- from django.contrib import admin
- from django.urls import path, re_path, include
- from website import views
- urlpatterns = [
- path('admin/', admin.site.urls),
- # 分发
- re_path(r'website/', include('website.urls')) # 第一个参数为应用根目录,第二个参数为应用的urls文件
3.此时输入http://127.0.0.1:8000/website/articles/2005/20/
输出结果为:
请尊重作者劳动成果,有需要请转载,标明出处!!!
django的静态文件配置和路由控制的更多相关文章
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...
- Django 应用 静态文件配置
Django 应用 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- Django之静态文件配置
在项目目录中打开settings.py,在最下面配置静态文件(css文件,js文件以及其他静态配置文件),比如说html使用到了jQuery框架,我们要在项目根目录下创建statics(可自定义),将 ...
- django静态文件配置
开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...
- Django——静态文件配置
本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...
- apache静态文件配置
开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...
- 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册
第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, incl ...
- django静态文件配置和使用
一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...
随机推荐
- JMeter压力测试,http请求压测,5分钟让你学会如何压测接口!
JMeter压力测试 官网:https://jmeter.apache.org 最新款的jmeter需要java8的支持,所以请自行安装jdk8.这里就不啰嗦了. 可以根据自己的系统下载zip或者是t ...
- MonkeyRunner Mac环境 录制脚本和回放 批量回放
1.MonkeyRunner是AndroidSDK自带的一个东西,在SDK目录中的tools\bin文件夹中 2.配置环境变量 编辑环境变量:打开终端输入:open ~/.bash_profile 将 ...
- c++踩坑大法好 宏定义 头文件
1,c++宏定义是干啥的?防止重复引用,如何防止重复引用? //a.h //声明一个类,和其他声明 #include <iostream> class A{ public: static ...
- Tomcat 端口配置,及原理详解
1 tomcat 文件配置详细说明 tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同.端口配置路径为tomcat\ co ...
- 九、c++容器
9.1 简介 容器库是类模板与算法的汇集,允许程序员简单地访问常见数据结构,例如队列.链表和栈. 有三类容器--顺序容器.关联容器和无序关联容器--每种都被设计为支持不同组的操作. 顺序容器:顺序容器 ...
- OI记录
这里是蒟蒻xsl的OI记录. 2017 2017.03.?? 开始接触OI 2017.10.14 参加NOIP2017普及组初赛,踩着分数线进入了复赛 2017.11.11 参加NOIP2017普及组 ...
- 计算系数(NOIP2011提高LuoguP1313)
一道数论好题,知识点涉及扩展欧几里得,快速幂,逆元,二项式定理,模运算,组合数等. (别问为啥打了快速幂不用费马小求逆元...我就练习下扩欧) (数据就应该再加大些卡掉n^2递推求组合数的) #inc ...
- win api + ffmpeg 播放 mp3 音乐
暂时记录,还有很多需要改善的地方一直没弄好,比如不知道怎么对上正确的播放速度. 有一些多余的代码,不用在意. #include <iostream> #include <fstrea ...
- 【c++】零基础的自修课 01-开发工具的安装(code::blocks)
1/开发工具的下载地址: ·(选用 visual studio开发工具,有区分mac和windows版本)https://visualstudio.microsoft.com/zh-hans/down ...
- 「题解」「UOJ-164」「清华集训2015」V
目录 题目 原题目 简要题目 正解 这道题题目简洁新颖,吸引读者阅读兴趣... 题目 原题目 点这里 简要题目 需要你维护长度为n的序列并支持下列操作: 区间加法: 区间赋值: 区间每个 \(a_i\ ...