You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中为同一个视图配置两个URL(路径)?

Django 同视图绑定多URL的实现方法

直接在项目/应用的urls.py文件中定义多条路径条目,全部指向同一个视图即可,分为两种常用场景:

场景1:两个URL返回完全一致的内容

直接写两条path规则,指向同一个视图函数/类视图即可,示例如下:

视图函数示例

# views.py
from django.shortcuts import render

def about(request):
    return render(request, 'about.html')

URL配置示例

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    # 第一条路径
    path('about/', views.about, name='about_alias1'),
    # 第二条路径,指向同一个视图
    path('about-us/', views.about, name='about_alias2'),
]

此时用户访问/about/和/about-us/都会触发同一个about视图,返回完全相同的页面内容。

场景2:两个URL使用同一视图,但逻辑有微小差异

可以通过给路径传递额外参数的方式实现,无需重复编写视图代码:

带参数的视图示例

# views.py
from django.shortcuts import render
from .models import Article

def article_list(request, category):
    articles = Article.objects.filter(category=category)
    return render(request, 'list.html', {'articles': articles})

URL配置示例

# urls.py
from django.urls import path
from . import views

urlpatterns = [
    # 传递技术分类参数
    path('tech/', views.article_list, {'category': 'tech'}, name='tech_articles'),
    # 传递运营分类参数,同一视图返回不同分类的内容
    path('operation/', views.article_list, {'category': 'operation'}, name='operation_articles'),
]

如果是类视图,可以直接在as_view()方法中传入自定义参数修改类属性,示例:

# urls.py
from django.urls import path
from .views import ArticleListView

urlpatterns = [
    # 每页展示10条
    path('articles/', ArticleListView.as_view(paginate_by=10), name='article_list_10'),
    # 每页展示20条,同一类视图
    path('articles/more/', ArticleListView.as_view(paginate_by=20), name='article_list_20'),
]

注意事项

  • 不同路径的name属性必须保持唯一,否则Django反向解析URL时会出现匹配错误
  • 如果使用re_path写正则路径,逻辑完全一致,定义多条规则指向同一视图即可

内容的提问来源于stack exchange,提问作者coderDcoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 12:06:00