NoReverseMatch - 如何添加 url 参数进行渲染?

NoReverseMatch - How to add url parameter to render?

render 或任何其他解决方案的情况下,是否有任何方法可以提供 url 参数?我需要以某种方式提供 user_url.

# view
def create_gallery(request, user_url):

    if request.method == 'POST':
        extended_form = GalleryExtendedForm(request.POST, prefix="extended_form")
        basic_form = GalleryForm(request.POST, prefix="basic_form")
        print(request.POST)
        if extended_form.is_valid() and basic_form.is_valid():
            pass
    else:
        extended_form = GalleryExtendedForm(prefix="extended_form")
        basic_form = GalleryForm(prefix="basic_form")

        return render(request, 'galleries/gallery_create_n_update.html', 
                     {'extended_form': extended_form,
                      'basic_form': basic_form})

# core.urls
urlpatterns = [
    url(r'^(?P<user_url>[\w.-]+)/', include('profiles.urls', namespace='profiles_user')),
]

# profiles.urls
urlpatterns = [
    url(r'^gallery/', include('galleries.urls')),
    # ... lots of others urls
]

# galleries.urls
urlpatterns = [
    url(r'^add/$', views.create_gallery, name='gallery-add'),
]

错误:

django.urls.exceptions.NoReverseMatch: Reverse for 'gallery-add' with arguments '('',)'
and keyword arguments '{}' not found.
1 pattern(s) tried: ['(?P<user_url>[\w.-]+)/gallery/add/$']

您应该将user_url传递给render()context参数,这样才能在模板中使用。

然后,在模板中,您可以将 user_url 作为参数添加到 url template tag,如下所示:

{% url 'gallery-add' user_url=user_url %}