Django中的URL配置和模板

Django中的URL配置 :

实例:

Python代码  

  1. urlpatterns = patterns(‘‘,
  2. # Example:
  3. # (r‘^myweb/‘, include(‘myweb.foo.urls‘)),
  4. # Uncomment the admin/doc line below and add ‘django.contrib.admindocs‘
  5. # to INSTALLED_APPS to enable admin documentation:
  6. # (r‘^admin/doc/‘, include(‘django.contrib.admindocs.urls‘)),
  7. # Uncomment the next line to enable the admin:
  8. (r‘^admin/‘, include(admin.site.urls)),
  9. (r‘^$‘,"view.index"),
  10. (r‘^hello/$‘,"view.hello"),
  11. (r‘^time/(\d+)/$‘,"view.time"),
  12. (r‘^time1/(?P<id>(\d+))/$‘,direct_to_template,{"template":"time1.html"}),
  13. (r‘^time2/$‘,direct_to_template,{‘template‘:‘time2.html‘}),
  14. )

(r‘^$‘,"view.index"),
首页,直接访问地址,交给view.index这个方法处理,比如 :http://localhost/

(r‘^hello/$‘,"view.hello"),
访问比如http://localhost/hello的地址交给view.hello方法处理

(r‘^time/(\d+)/$‘,"view.time"),

访问http://localhost/time/1/,http://localhost/time/2/这样的地址,后面(\d+)用于匹配的数字,非数字是必能匹配的,并且后面的(\d+)的值会作为参数,所以方法应该这样写

def time(request,offset)  request为请求对象会自动传递进来,offset即为URL中(\d+)匹配的值,比如http://localhost/time/2/,offset 的值就是2

(r‘^time1/(?P<id>(\d+))/$‘,direct_to_template,{"template":"time1.html"}),

direct_to_template:为转发模板到 time1.html

(?P<id>(\d+)) 表示匹配后给这个参数加上一个别名,在页面中使用{{params.id}}可以访问到URL中id的值

另外在加载模板的时候需要配置:

1、settings.py 中的

Python代码  

  1. TEMPLATE_DIRS = (
  2. # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
  3. # Always use forward slashes, even on Windows.
  4. # Don‘t forget to use absolute paths, not relative paths.
  5. os.path.join(os.path.dirname(__file__), ‘templates/‘).replace(‘\\‘,‘/‘),
  6. )

表示将网站目录下 templates/的模板路径

2、在urls.py中导入direct_to_template方法 from django.views.generic.simple import direct_to_template

如何启用Django的admin,我用的是1.1.1版本:

1、 在setting.py中启用admin和auth

INSTALLED_APPS = (
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.sites‘,
    ‘django.contrib.admin‘,

)

2、在urls.py中启用以下代码:

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

url配置 (r‘^admin/‘, include(admin.site.urls)), 启用

就能打开admin,比如http://localhost/admin/

命名匹配: 

在 Python 正则表达式里, 命名分组的语法是(?P<name>pattern), 这里name是分组的名字而pattern是要匹配的模式.

下面用命名分组重写上面的例子:

urlpatterns = patterns(‘‘,
    (r‘^articles/2003/$‘, ‘news.views.special_case_2003‘),
    (r‘^articles/(?P<year>\d{4})/$‘, ‘news.views.year_archive‘),
    (r‘^articles/(?P<year>\d{4})/(?P<month>\d{2})/$‘, ‘news.views.month_archive‘),
    (r‘^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d+)/$‘, ‘news.views.article_detail‘),
)

上面的代码与前面的代码功能完全相同, 不过传递给 view 函数的不再是位置相关参数,而变成了关键字参数.比如:

方法定义:

def month_archive(request,year)

def month_archive(request,year,month)

def article_detail(request,year,month,day)

  • 页面请求/articles/2005/03/会自动调用函数news.views.month_archive(request, year=‘2005‘, month=‘03‘), 而不是news.views.month_archive(request, ‘2005‘, ‘03‘).
  • 页面请求/articles/2003/03/3/会自动调用函数news.views.article_detail(request, year=‘2003‘, month=‘03‘, day=‘3‘).
时间: 2024-10-18 09:01:25

Django中的URL配置和模板的相关文章

django中的url控制

1.django中的第一个控件:url控制  (路由分发) urls.py:请求路径与视图函数的之间的关系 步骤: 1.首先是要配置环境,   2.其次就是引路径   3.在视图的文件夹里面写相应的函数 简单使用: 1.通过正则加括号分组获取请求参数  (正则只是针对字符串格式的匹配)   2.一般在写地址的时候用正则中的有名分组,这样以后在调用的时候变量调用的时候直接用的是关键字传参,就可以随便的去书写参数的位置   3.分发:include(如果出现特别多的url写在一个urls中是非常麻烦

Django -- 视图和URL配置

一个人行走的范围,就是他的世界:    -- 北岛<青灯> 一个人吟唱的语调,就是他的生活.    -- 小Q<小曲> ------------------------------------------------------------------------------------------------- 前一节我们建立了一个Django项目,这一节我们来了解视图和url的关系: [第一个视图 根目录] 当我们搭建好django时,urls.py内没有url,我们会看到一个

利用Django中的url方法实现地址动态拼接自动生成超链接地址

目标 建立一个图书列表页面,显示图书名列表,并实现点击书名跳转到图书详细页面,显示图书详细信息. URL方法简介 功能:返回一个绝对路径的引用(不包含域名的URL):该引用匹配一个给定的视图函数和 一些可选的参数. 语法:{% url 'some-url-name' value1 value2 %} 参数'some-url-name'表示在urls.py文件中的路由地址: 参数value1和value2表示拼接的值,可选. 例如,urls.py: url(r'^bookinfo/(\d+)/$'

Django 中使用 logging 配置 logger 自定义日志输出

在使用 django 开发过程中,默认的日志输出是不能满足我们去排查问题的,往往需要自定义的日志输出,帮助我们去排查程序BUG,定位问题原因. 在使用 django 的开发过程中,我使用的是 python 内置日志模块 logginglogging 的详细使用讲解我就不多说了,度娘一抓一大抓:我只记录下我在 django settings 中的 logger 配置.方便以后使用 以下在我在 settings 中定义的 logger:# Custom output log LOGGING = {'

记录django中对views设置进行模板复用

django版本:1.4.5 由于需要对一个网页的部分内容进行输出,相当于第一个网页显示数据库中的所有信息,第二个网页需要显示数据库中某个特定字段的特定值的输出,页面样式相同 进一步解释,可以理解为一个页面显示全部下载项,另一个页面显示敏捷类游戏下载项,就是这样,页面样式一样 现在开始记录实现方式,在models里面必须有一个分类字段 views.py内容如下 1 def download(request): 2 ware = Software.objects.all() 3 #这个是取出所有数

给Django中的url起名字

url反转  =>reverse 1.from django.shortcuts  import  reverse 2. 利用reverse函数对URL名称进行反转  reverse(url名称) 3.反转之后的内容就是我们需要的路由 如果我们反转的url请求需要参数的话  那么url的这个参数应该是以字典的形式传递给 reverse函数    例如 path(''book/book_detail/<book_id>,views.book_detail,name=''book_detai

django中的url重定向----redirect

1.记得要先导入redirect 2.打开访问路径 提交信息之后就会跳转到指定的链接 原文地址:https://www.cnblogs.com/learning-python/p/10247094.html

在Django中使用ORM创建图书管理系统

一.ORM(对象关系映射) 很多语言的web框架中都有这个概念 1. 为什么要有ORM? 1. 写程序离不开数据,要使用数据就需要连接数据库,但是不同的数据库在sql语句上(mysql,oracle等)会有点区别, 因此直接在你的项目中使用sql语句的话,不便于以后的修改,万一更换了数据库,那所有sql语句不就要重新写吗? 所以这个时候ORM就体现出优点了,你只需要写ORM的代码,它就会根据你连接的数据库自动帮你翻译成对应的sql语句, 也就是说无论你使用的是mysql还是oracle,ORM操

Django中cookie和session

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此cookie就是在这样一个场景