上一篇写到刚建完django项目,此时我登录页面中调用了js文件,执行后发现报错了找不到js这个文件

目录结构如图所示:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script src="/statics/js.js">
  7.  
  8. </script>
  9. </head>
  10. <body>
  11.  
  12. <h4>
  13. 登录页面
  14. </h4>>
  15.  
  16. <form action="" method="post">
  17. 用户名<input type="text" name="user">
  18. 密码<input type="password" name="pwd">
  19. <input type="submit">
  20. </form>
  21. </body>
  22. </html>

显示找不到这个js文件

那么问题来了,我们应该怎么获取这个静态js文件呢?别急和我来一步一步配置

在django的公共项目目录中有一个settings.py的文件

在这个文件中配置一个STATICFILES_DIRS变量,配置好这个STATICFILES_DIRS后,django中就会把statics目录下的文件路径改成static

  1. LANGUAGE_CODE = 'en-us'
  2.  
  3. TIME_ZONE = 'UTC'
  4.  
  5. USE_I18N = True
  6.  
  7. USE_L10N = True
  8.  
  9. USE_TZ = True
  10.  
  11. # Static files (CSS, JavaScript, Images)
  12. # https://docs.djangoproject.com/en/2.2/howto/static-files/
  13.  
  14. STATIC_URL = '/static/' # django自带的
  15.  
  16. STATICFILES_DIRS = [
  17. os.path.join(BASE_DIR, 'statics'),
  18. ]

配置完参数后,html中引用的js路径改为/static/js/js

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <script src="/static/js.js">
  7.  
  8. </script>
  9. </head>
  10. <body>
  11.  
  12. <h4>
  13. 登录页面
  14. </h4>>
  15.  
  16. <form action="" method="post">
  17. 用户名<input type="text" name="user">
  18. 密码<input type="password" name="pwd">
  19. <input type="submit">
  20. </form>
  21. </body>
  22. </html>

再次执行接口,就找到这个js文件了

接下来讲一下路由配置,首先讲一下路由控制之简单配置

项目目录为:

在公共配置中的urls中添加路由配置

  1. from django.contrib import admin
  2. from django.urls import path, re_path
  3. from website import views
  4.  
  5. urlpatterns = [# 路由配置 路径--------》视图函数
  6.  
  7. re_path(r'^articles/2003/', views.special_case_2003),
  8. re_path(r'^articles/([0-9]{4})/$', views.year_archive),
  9. re_path(r'^articles/([0-9]{4})/([[0-9]{2})/$', views.month),
  10.  
  11. ]

在单独项目对应的views(视图)文件中添加对应的视图函数

  1. from django.shortcuts import render, HttpResponse
  2. import time
  3.  
  4. # Create your views here.
  5.  
  6. def special_case_2003(request):
  7.  
  8. return HttpResponse('special_case')
  9.  
  10. def year_archive(request, year):
  11.  
  12. return HttpResponse(year)
  13.  
  14. def month(request, year, months):
  15.  
  16. 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/

输出结果为:

这里有个注意点需要强调一下!!!

当你的路由中有元组时,在对应的视图函数中就要加上一个对应的位置参数,这点很重要,否则就会报错。

  1. rom django.contrib import admin
  2. from django.urls import path, re_path
  3. from website import views
  4.  
  5. urlpatterns = [
  6. path('admin/', admin.site.urls),
  7.  
  8. # 路由配置 路径--------》视图函数
  9.  
  10. re_path(r'^articles/2003/', views.special_case_2003),
  11. re_path(r'^articles/([0-9]{4})/$', views.year_archive), # 比如这个路径有一个元祖,在对应的year_archive中就需要对应的传一个位置参数
  12. re_path(r'^articles/([0-9]{4})/([[0-9]{2})/$', views.month), # 这条也是
  13.  
  14. ]
  15.  
  16. def year_archive(request, year): # 位置参数year
  17.  
  18. return HttpResponse(year)
  19.  
  20. def month(request, year, months): # 位置参数year和months
  21.  
  22. return HttpResponse(months)

接下来讲下路由控制之有名分组

背景:当视图函数中的参数很多时,参数顺序很容易报错,这时就可以用到有名分组了。

  1. 路由控制:
  2. re_path(r'^articles/(?P<y>[0-9]{4})/(?P<m>[[0-9]{2})/$', views.month)
  3.  
  4. 对应的视图函数:
  5. def month(request, m, y): # 这里必须要传y和m,否则会报错
  6.  
  7. return HttpResponse(y+'+'+m)

此时不管交换m和y的位置,对应的值都不会改变。

路由控制之分发

背景:之前写的路由都是写在全局中的,如果我有十几个应用我该怎么办?难道都写在全局中吗?显然不太现实,此时就要用到分发,把路由结偶。

1.先在自己的应用中创建一个urls文件,把对应的路由都写好。

  1. from django.urls import path, re_path
  2. from website import views
  3.  
  4. urlpatterns = [
  5.  
  6. # 路由配置 路径--------》视图函数
  7.  
  8. re_path(r'^articles/2003/', views.special_case_2003),
  9. re_path(r'^articles/([0-9]{4})/$', views.year_archive),
  10. re_path(r'^articles/(?P<y>[0-9]{4})/(?P<m>[[0-9]{2})/$', views.month),
  11.  
  12. ]

2.在全局的urls文件中导入include

  1. from django.contrib import admin
  2. from django.urls import path, re_path, include
  3. from website import views
  4.  
  5. urlpatterns = [
  6. path('admin/', admin.site.urls),
  7.  
  8. # 分发
  9. re_path(r'website/', include('website.urls')) # 第一个参数为应用根目录,第二个参数为应用的urls文件

3.此时输入http://127.0.0.1:8000/website/articles/2005/20/

输出结果为:

请尊重作者劳动成果,有需要请转载,标明出处!!!

django的静态文件配置和路由控制的更多相关文章

  1. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  2. Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作

    静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...

  3. Django 应用 静态文件配置

    Django 应用 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  4. Django之静态文件配置

    在项目目录中打开settings.py,在最下面配置静态文件(css文件,js文件以及其他静态配置文件),比如说html使用到了jQuery框架,我们要在项目根目录下创建statics(可自定义),将 ...

  5. django静态文件配置

    开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...

  6. Django——静态文件配置

    本文目的 最近用django开发项目,发现django的静态文件(js,css和img等)配置比较麻烦,开发环境和生产环境的配置还不一样,这里记录一下,作为备忘.我当前使用的版本是django v1. ...

  7. apache静态文件配置

    开发环境配置 需要下面几个步骤 1. 在app目录下创建static目录,将静态文件和相关文件夹放到此目录下,如your_app/static/img等 2. 确保settings.py中的INSTA ...

  8. 第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册

    第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, incl ...

  9. django静态文件配置和使用

    一.首先需要了解的知识点是: 1.出于对效率和安全的考虑,django管理静态文件的功能仅限于在开发阶段的debug模式下使用,且需要在配置文件的INSTALLED_APPS中加入django.con ...

随机推荐

  1. JMeter压力测试,http请求压测,5分钟让你学会如何压测接口!

    JMeter压力测试 官网:https://jmeter.apache.org 最新款的jmeter需要java8的支持,所以请自行安装jdk8.这里就不啰嗦了. 可以根据自己的系统下载zip或者是t ...

  2. MonkeyRunner Mac环境 录制脚本和回放 批量回放

    1.MonkeyRunner是AndroidSDK自带的一个东西,在SDK目录中的tools\bin文件夹中 2.配置环境变量 编辑环境变量:打开终端输入:open ~/.bash_profile 将 ...

  3. c++踩坑大法好 宏定义 头文件

    1,c++宏定义是干啥的?防止重复引用,如何防止重复引用? //a.h //声明一个类,和其他声明 #include <iostream> class A{ public: static ...

  4. Tomcat 端口配置,及原理详解

    1 tomcat 文件配置详细说明 tomcat服务器需配置三个端口才能启动,安装时默认启用了这三个端口,当要运行多个tomcat服务时需要修改这三个端口,不能相同.端口配置路径为tomcat\ co ...

  5. 九、c++容器

    9.1 简介 容器库是类模板与算法的汇集,允许程序员简单地访问常见数据结构,例如队列.链表和栈. 有三类容器--顺序容器.关联容器和无序关联容器--每种都被设计为支持不同组的操作. 顺序容器:顺序容器 ...

  6. OI记录

    这里是蒟蒻xsl的OI记录. 2017 2017.03.?? 开始接触OI 2017.10.14 参加NOIP2017普及组初赛,踩着分数线进入了复赛 2017.11.11 参加NOIP2017普及组 ...

  7. 计算系数(NOIP2011提高LuoguP1313)

    一道数论好题,知识点涉及扩展欧几里得,快速幂,逆元,二项式定理,模运算,组合数等. (别问为啥打了快速幂不用费马小求逆元...我就练习下扩欧) (数据就应该再加大些卡掉n^2递推求组合数的) #inc ...

  8. win api + ffmpeg 播放 mp3 音乐

    暂时记录,还有很多需要改善的地方一直没弄好,比如不知道怎么对上正确的播放速度. 有一些多余的代码,不用在意. #include <iostream> #include <fstrea ...

  9. 【c++】零基础的自修课 01-开发工具的安装(code::blocks)

    1/开发工具的下载地址: ·(选用 visual studio开发工具,有区分mac和windows版本)https://visualstudio.microsoft.com/zh-hans/down ...

  10. 「题解」「UOJ-164」「清华集训2015」V

    目录 题目 原题目 简要题目 正解 这道题题目简洁新颖,吸引读者阅读兴趣... 题目 原题目 点这里 简要题目 需要你维护长度为n的序列并支持下列操作: 区间加法: 区间赋值: 区间每个 \(a_i\ ...