【问题标题】:Django Urlpatterns, Include and slugs not workingDjango Urlpatterns,Include 和 slugs 不起作用
【发布时间】:2015-11-13 21:47:45
【问题描述】:

我正在为 URL 和 slug 苦苦挣扎。在我的 urlpatterns 中,我想这样做:

url(r'^(?P<slug>.+)/', include([
    url(r'^$', 'myapp.views.MainCity'),
    url(r'^form/(?P<id>\d+)/$', 'myapp.views.Showform'), # Problem here   
])),

假设蛞蝓是一个城市,它将带你到该城市的主页。每个城市都有一个事件列表。每个事件都有一个带有 href="form/{{ event.id }}" 的按钮,它将(jquery ajax)表单加载到引导模式窗口中。但它一直试图将 MainCity 页面加载到模态而不是 '/form/id' url

def MainCity(request, slug):
    city = get_object_or_404(City, slug='slug')
    events = city.events.all().order_by('-date')
    context = {'city': city, 'events':events} 
    return render_to_response('index.html', context, context_instance=RequestContext(request)) 

def Showform(request, id):
    form = SomeForm()
    e = Events.objects.get(pk=id)
    # form handling etc..
    return render_to_respone('form.html', {'form': form, 'e':e}, context_instance=RequestContext(request))

如果我将城市名称硬编码到 urlpatterns 中,此设置似乎有效。我找到并加载表格。但不是当我使用 slug 时,它会直接进入 MainCity 视图。那么构建这个的正确方法是什么?

【问题讨论】:

  • 任何错误回溯?我也认为这不是使用网址的正确方法
  • 是的,MainCity-view 会抛出 404 错误,我可以理解原因,因为在尝试打开 form-url 时它甚至不应该命中。

标签: python django django-views django-urls


【解决方案1】:

问题是.+ 匹配任何字符,包括正斜杠。

一个更常见的 slug 正则表达式是 [-\w]+

【讨论】:

  • 太棒了!谢谢!这并将“slug”作为参数放入第二个视图中做到了!
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 2023-04-06
  • 2015-02-20
相关资源
最近更新 更多