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 %}
在 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 %}