Django的路由变化

遇到需要修改路由的需求,特别记录一下

项目开始

  1. django-admin startproject sandboxOA. # 外部文件夹可以改变名字, '.'的意思是上一级不需要再添加一个sandboxOA文件

创建应用

  1. python manager.py startapp blog

blog的配置

在应用中增加一个urls.py的路由配置, name 的配置主要是这里的这三个,nba, lakers, rockets

  1. from django.urls import path
  2. from . import views
  3. urlpatterns = [ #也要放到urlpatterns 变量中
  4. path('',views.book, name='book'), #/book
  5. path('detail/<int:book_id>/',views.book_detail, name='book2'), #主urls.py会跟这个进行拼接 注意不要多加/
  6. path('list/',views.book_list), # 'list/'前面没有/
  7. path('nba', views.NBA_views),
  8. path('lakers/win', views.lakers_views, name="lakers"), # 给路由取一个别名
  9. path(r'rockets/<int:num>/', views.rockets_views, name="rockets")
  10. ]

在blog/views.py中编写代码

  1. from django.shortcuts import render
  2. from django.http import HttpResponse
  3. # Create your views here.
  4. def hello(request):
  5. return HttpResponse('欢迎使用Django!')
  6. def book(request):
  7. return HttpResponse('欢迎使用Django!')
  8. def book_detail(request, book_id):
  9. text = '图书的id是:%s' % book_id
  10. return HttpResponse(text)
  11. def book_list(request):
  12. return HttpResponse("图书列表页")
  13. def index(request):
  14. return render(request, 'book.html')
  15. def NBA_views(request):
  16. return render(request, "NBA.html")
  17. def lakers_views(request):
  18. return render(request, "lakers.html")
  19. def rockets_views(request, num):
  20. print(num)
  21. # return HttpResponse("火箭列表页")
  22. return render(request, "rockets.html")

在根项目中编写代码

setting.py 配置 缺少一个db得配置

  1. """
  2. Django settings for sandboxOA project.
  3. Generated by 'django-admin startproject' using Django 3.2.5.
  4. For more information on this file, see
  5. https://docs.djangoproject.com/en/3.2/topics/settings/
  6. For the full list of settings and their values, see
  7. https://docs.djangoproject.com/en/3.2/ref/settings/
  8. """
  9. from pathlib import Path
  10. import os
  11. # Build paths inside the project like this: BASE_DIR / 'subdir'.
  12. BASE_DIR = Path(__file__).resolve().parent.parent # 这个是当前目录
  13. # Quick-start development settings - unsuitable for production
  14. # See https://docs.djangoproject.com/en/3.2/howto/deployment/checklist/
  15. # SECURITY WARNING: keep the secret key used in production secret!
  16. SECRET_KEY = 'django-insecure-rzx-%k2dkfb8^il2z6^)u72#6ov$1v@rt+k-fu6x^%qg8aq#sj'
  17. # SECURITY WARNING: don't run with debug turned on in production!
  18. DEBUG = True
  19. # DEBUG = False
  20. ALLOWED_HOSTS = ['*'] # 修改后,表示任何域名都能访问。如果指定域名的话,在''里放入指定的域名即可
  21. # Application definition
  22. INSTALLED_APPS = [
  23. 'django.contrib.admin',
  24. 'django.contrib.auth',
  25. 'django.contrib.contenttypes',
  26. 'django.contrib.sessions',
  27. 'django.contrib.messages',
  28. 'django.contrib.staticfiles',
  29. 'blog' # 注册一个app应用
  30. ]
  31. MIDDLEWARE = [
  32. 'django.middleware.security.SecurityMiddleware',
  33. 'django.contrib.sessions.middleware.SessionMiddleware',
  34. 'django.middleware.common.CommonMiddleware',
  35. 'django.middleware.csrf.CsrfViewMiddleware',
  36. 'django.contrib.auth.middleware.AuthenticationMiddleware',
  37. 'django.contrib.messages.middleware.MessageMiddleware',
  38. 'django.middleware.clickjacking.XFrameOptionsMiddleware',
  39. ]
  40. ROOT_URLCONF = 'sandboxOA.urls'
  41. TEMPLATES = [
  42. {
  43. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  44. 'DIRS': [os.path.join(BASE_DIR, 'templates')],
  45. 'APP_DIRS': True,
  46. 'OPTIONS': {
  47. 'context_processors': [
  48. 'django.template.context_processors.debug',
  49. 'django.template.context_processors.request',
  50. 'django.contrib.auth.context_processors.auth',
  51. 'django.contrib.messages.context_processors.messages',
  52. ],
  53. },
  54. },
  55. ]
  56. WSGI_APPLICATION = 'sandboxOA.wsgi.application'
  57. # Database
  58. # https://docs.djangoproject.com/en/3.2/ref/settings/#databases
  59. # DATABASES = {
  60. # 'default': {
  61. # 'ENGINE': 'django.db.backends.sqlite3',
  62. # 'NAME': BASE_DIR / 'db.sqlite3',
  63. # }
  64. # }
  65. # Password validation
  66. # https://docs.djangoproject.com/en/3.2/ref/settings/#auth-password-validators
  67. AUTH_PASSWORD_VALIDATORS = [
  68. {
  69. 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
  70. },
  71. {
  72. 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
  73. },
  74. {
  75. 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
  76. },
  77. {
  78. 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
  79. },
  80. ]
  81. # Internationalization
  82. # https://docs.djangoproject.com/en/3.2/topics/i18n/
  83. LANGUAGE_CODE = 'zh-hans' # 语言修改为中文
  84. TIME_ZONE = 'Asia/Shanghai' # 时区改为上海
  85. USE_I18N = True
  86. USE_L10N = True
  87. USE_TZ = True
  88. # Static files (CSS, JavaScript, Images)
  89. # https://docs.djangoproject.com/en/3.2/howto/static-files/
  90. STATIC_URL = '/static/'
  91. # 配置出一个静态文件路径
  92. STATICFILES_DIRS = [
  93. os.path.join(BASE_DIR,"static"),
  94. ]
  95. #设置文件上传路径,图片上传、文件上传都会存放在此目录里
  96. MEDIA_URL = '/media/'
  97. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  98. # Default primary key field type
  99. # https://docs.djangoproject.com/en/3.2/ref/settings/#default-auto-field
  100. DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

根项目下的 urls.py

  1. from django.contrib import admin
  2. from django.urls import path, include
  3. # 对于处理静态文件如图片,CSS和文本非常重要
  4. from django.conf import settings
  5. from django.conf.urls.static import static
  6. from . import views
  7. from django.conf.urls import url
  8. urlpatterns = [
  9. path('admin/', admin.site.urls),
  10. path('blog/', include('blog.urls'))
  11. ]
  12. handler404 = views.page_not_found # 增加404

templates文件夹的下的html

NBA.html

  1. <!-- NBA.html -->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>体育新闻</title>
  7. </head>
  8. <body>
  9. <h2>
  10. <a href="{% url 'lakers' %}">去湖人队看看</a>
  11. </h2>
  12. <h2>
  13. <a href="{% url 'rockets' 34 %}">去火箭队看看</a>
  14. </h2>
  15. </body>
  16. </html>

lakers.html

  1. <!-- lakers.html -->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>湖人队</title>
  7. </head>
  8. <body>
  9. <h1>The Los Angeles lakers</h1>
  10. </body>
  11. </html>

rockets.html

  1. <!-- lakers.html -->
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="UTF-8">
  6. <title>火箭队</title>
  7. </head>
  8. <body>
  9. <h1>Houston Rockets!!!!!!!!!!!</h1>
  10. </body>
  11. </html>

这时候 运行django, 就可以看到,name的变化,可以在blog/urls.py 随意的改变 的前置了

改变一下urls

完。

Django, urls的参数name的demo的更多相关文章

  1. Django—urls系统:urls基础

    Django的urls系统简介 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映 ...

  2. django urls路由匹配分发

    django urls路由匹配分发 一.urls配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对 ...

  3. django模板传入参数的处理方式与反向生成url

    前端模板传入参数的处理方式 1.传入单个参数: 前端使用href="/sel-{{ row.0 }}.html, url使用url(r'sel-(.+).html',home.index), ...

  4. Python学习第二十八课——Django(urls)

    Django框架中的urls配置: 首先通过pycharm创建一个Django项目: 例如要写blog的功能:则在digango_lesson中的urls代码如下: """ ...

  5. Django urls 路由

    写url和视图的的对应关系 from django.conf.urls import url from django.contrib import admin from app名 import vie ...

  6. angular route 与 django urls 冲突怎么解决?

    app.js var app = angular.module('app', [ 'ngResource', 'ngRoute', // 'ui.bootstrap', // 'ngResource' ...

  7. django urls 配置小记

    django urls 配置小记 首先应了解 django2.0在url的配置上较之以前的版本有点区别,在之前的版本是通过django.conf.urls.url函数来实现路径配置的 urlpatte ...

  8. 12、django.urls.exceptions.NoReverseMatch:

    问题: django.urls.exceptions.NoReverseMatch: Reverse for 'project_star' with keyword arguments '{'proj ...

  9. [django]urls.py 中重定向

    Django 1.5 有时候需要对一个链接直接重定向,比如首页啥的重定向到一个内容页等等,在views.py 中可以设定,如果没有参数啥的在urls.py 中设定更加方面 from django.vi ...

  10. Django 传递额外参数及 URL别名

    传递额外参数到视图函数中 在 urls.py 文件中添加下面内容 from django.conf.urls import url urlpatterns = [ url(r'index', view ...

随机推荐

  1. P3128 [USACO15DEC]Max Flow P(树上倍增和树链剖分)

    思路1(树上倍增$ + $树上差分) 每次都修改一条从\(u\)到\(v\),不就是树上差分的专门操作吗?? 直接用倍增求\(LCA\),每次\(d[u]++,d[v]++,d[LCA(u,v)]-- ...

  2. NameNode启动问题:Failed to load an FSImage file!

    NameNode启动问题:Failed to load an FSImage file! 2022-01-23 13:35:53,807 FATAL org.apache.hadoop.hdfs.se ...

  3. 爬快手,graphql查询语言

    graphql查询语言:https://blog.csdn.net/qq_41882147/article/details/82966783 即:前端调用同一个接口传入不同的操作,得到不同的返回值 一 ...

  4. git 更换远程连接

    原来的git仓库不可用,更换远程仓库 查看远程仓库地址 git remote -v 删除远程仓库 git remote rm origin 添加远程仓库地址 git remote add origin ...

  5. 给c++写python的split()与input()【python一样写c++、一】

    python的split确实是很香的功能. 写c++的时候,就会想着,要是能直接input().split()那不挺好. 实际上真的可以:自己动手,丰衣足食. 先放成品展示. int main(){ ...

  6. Scanner进阶使用

    Scanner 进阶使用 package com.andy.base.scanner; import java.util.Scanner; public class Demo04 { public s ...

  7. Codeforces Round 857 (Div. 2) A-D

    Codeforces Round 857 (Div. 2) A. Likes 求每回合最大的数列:先全使用正数,每个正数对ans++,再全使用负数,每个负数对ans-- 求每回合最小的数列:方法1(模 ...

  8. Activiti 7 启动流程实例

    首先,考虑下面这样一个流程图 主要的流程定义如下: <process id="demo" name="demo" isExecutable="t ...

  9. 为什么HashMap查找比List快很多?

    做两数之和这道题目时,引发了一个思考: 为什么两者运行时间相差如此之大???好残忍,我List比你HashMap到底差在哪**** 于是我一顿查资料.... 战犯哈希算法登场 哈希算法会根据你要存入的 ...

  10. NEFU-NSILAB2021选拔赛WriteUp

    Web signin 打开看到源码: <?php highlight_file(__FILE__); $file = $_GET['file']; if ($file) { include $f ...