django的视图和URL配置

本文介绍如何将旧版Django项目的URL配置迁移到1.10及以上版本。主要内容包括弃用patterns函数,调整import语句,以及更新视图引用方式。

我们在看一些以前的工程代码或者更新以前的项目时(Django框架),视图和url的配置类似这样的。

from django.conf.urls.defaults import include, url, patterns

urlpatterns = patterns('',
    url(r'^mysite/', include('mysite.foo.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^longin/','view.longin'),
 )

但是我们新的环境下(django 1.10以后的版本)会报错,提示错误 ImportErroe:。。。。

这是因为1.10以后的django取消了patterns,没有django.conf.urls.default,也没有patterns,保留了url和include,所以格式上略有变化,需要将上面的url配置改写一下,适应新版本。

将django.conf.urls.defaults import * 改成 from django.conf.urls import url, include

将patterns()去掉,用[ ]代替,

将要用到的视图import进来, 例如: from view import login

去掉视图引号

from django.conf.urls import include, url
from view import login
urlpatterns = [ 
    url(r'^mysite/', include(mysite.foo.urls)),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^longin/',longin),
]






<think>好的,我现在需要帮助用户了解Django视图函数与URL的映射配置方法。首先,我需要回忆用户提供的引用内容,确保回答准确。根据引用,用户提到了Django视图必须返回HttpResponse,以及URL配置的相关示例。 首先,我应该从基础开始,解释视图URL的作用。视图处理请求并返回响应,而URL配置则是将特定的URL路径映射到对应的视图函数。用户可能需要一个分步骤的教程,所以得按顺序讲解配置流程。 接下来,我需要确保涵盖创建视图函数的部分。引用中的示例显示视图函数需要接收request参数,并返回HttpResponse。要强调这一点,否则会出错,如引用1所述。 然后是URL映射的配置。用户提供的引用25提到在应用的urls.py中定义urlpatterns,使用path或re_path函数。需要说明如何导入视图,并将URL模式添加到urlpatterns列表中。这里还要提到项目根URL配置应用子URL配置的区别,可能用户会混淆这两个部分,所以需要区分清楚。 另外,用户可能对带参数的URL感兴趣,如引用35中的示例。需要解释如何在URL路径中使用变量,如<str:name>,并且视图函数中必须有对应的参数名。这部分容易出错,所以需要详细说明参数传递的规则。 可能还需要提到命名空间URL命名的重要性,但根据提供的引用,用户没有提到这点,但作为最佳实践,可以简要提及,或者暂时省略,保持回答简洁。 还要注意使用正确的格式,比如行内代码用$...$,独立代码块用```python。同时,确保生成相关问题,这些问题应该覆盖用户可能进一步想了解的内容,比如参数传递、错误处理、路由分发等。 最后,检查所有引用是否正确标注,例如关于HttpResponse的引用[^1],URL配置的引用[^2],带参数的引用[^3][^5]等。确保回答结构清晰,步骤明确,没有技术错误。</think>在Django框架中,视图URL的映射配置是实现网页请求处理的核心机制。以下是详细的分步说明: ### 一、视图函数与URL映射基础 1. **视图函数定义** 视图函数需接收`request`参数并返回`HttpResponse`对象,否则会触发错误: ```python # views.py from django.http import HttpResponse def index(request): return HttpResponse("<h1>首页</h1>") # 必须返回响应类型 ``` 2. **URL配置入口** 在项目`settings.py`中,`ROOT_URLCONF`指定了主路由文件(默认`urls.py`),Django由此开始查找映射规则[^5]。 ### 二、URL映射配置方法 1. **基础路径映射** 在应用目录的`urls.py`中使用`path`函数绑定路径与视图: ```python # urls.py from django.urls import path from . import views urlpatterns = [ path('index/', views.index), # 将/index/路径映射到index视图 ] ``` 2. **多级路由分发** 主路由文件通过`include()`实现多应用路由分离: ```python # 项目根urls.py from django.urls import include, path urlpatterns = [ path('app/', include('myapp.urls')), # 所有/app/开头的请求转至myapp应用处理 ] ``` ### 三、参数传递配置 1. **路径参数传递** 在URL中使用`<类型:参数名>`格式捕获值,视图函数需声明同名参数[^3][^5]: ```python # urls.py path('user/<int:user_id>/', views.user_profile) # views.py def user_profile(request, user_id): # 参数名必须与URL定义一致 return HttpResponse(f"用户ID: {user_id}") ``` 2. **查询参数处理** 通过`request.GET`获取问号传参: ```python def search(request): keyword = request.GET.get('q', '') # 获取/search/?q=xxx中的参数 return HttpResponse(f"搜索词: {keyword}") ``` ### 四、正则表达式路由 使用`re_path`处理复杂匹配需求: ```python from django.urls import re_path urlpatterns = [ re_path(r'^articles/(?P<year>[0-9]{4})/$', views.article_archive), ] ``` ### 五、路由命名与反向解析 1. **命名路由** 给路径添加`name`参数便于后续引用: ```python path('about/', views.about, name='about_page') ``` 2. **模板反向解析** 在模板中使用`{% url %}`标签: ```html <a href="{% url 'about_page' %}">关于我们</a> ``` 3. **代码反向解析** 在视图函数中使用`reverse()`: ```python from django.urls import reverse redirect_url = reverse('about_page') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值