django1.8在url.py中为url设置正则表达式

时间:2016-04-16 00:47:53

标签: python django

我正在尝试将当前网址发送到我的视图,以便重定向回我开始的原始网页

我发送2个参数" pk"这是我用于操作的关键数字" uri"这是我目前的网址

从我的url.py下面的行

我无法弄清楚应该如何设置

url(r'^subcategory/new/(?P<pk>\d+)/(<uri>\s+)/$',item.views.subcategory_new, name="subcategory_new"),

我收到错误消息

Reverse for 'subcategory_new' with arguments '()' and keyword arguments '{u'pk': 2, u'uri': 'http://127.0.0.1:8000/item/category/list/?name=M_Textile&keywords=&author=&creation_time='}' not found. 1 pattern(s) tried: ['item/subcategory/new/(?P<pk>\\d+)/(<uri>\\s+)/$']

我在url正则表达式中做错了什么?

以及我的其余代码

从我的template.html链接

<a href="{% url 'subcategory_new' pk=category.id uri=request.build_absolute_uri %}">Add SubCategory</a> 

最后是我的view.py

@login_required
def subcategory_new(request,pk,uri):
    category = get_object_or_404(Category, pk=pk)
    if request.method == "POST":
        form = SubCategoryForm(request.POST)
        if form.is_valid():
            subcategory = form.save(commit=False)
            #contact.author = request.user
            subcategory.creation_time = timezone.now()
            subcategory.category = category
            subcategory.save()
            return redirect(uri)
    else:
        form = SubCategoryForm()
    return render(request, 'item/subcategory_edit.html', {'form': form, 'category':category })

1 个答案:

答案 0 :(得分:2)

您缺少uri的指定捕获组:

url(r'^subcategory/new/(?P<pk>\d+)/(?P<uri>\S+)/$',item.views.subcategory_new, name="subcategory_new"),

而且,我还用\s+替换\S+,因为我怀疑你是否想要捕获一个或多个空格字符。