Django Urlpatterns,Include和slugs not working

时间:2015-08-20 09:53:22

标签: python django django-views django-urls

我正在努力处理网址和slu ..在我的urlpatterns中,我想这样做:

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

让我们说slu is是一个将你带到那个城市主页的城市。每个城市都有一系列活动。每个事件都有一个按钮,其中包含href =&#34; form / {{event.id}}&#34;将一个表单加载(jquery ajax)到一个bootstrap模态窗口。但它一直试图将MainCity页面加载到模态而不是&#39; / form / id&#39; 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-view。那么这个结构的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

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

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