gpt4 book ai didi

django - 无反向匹配在/

转载 作者:行者123 更新时间:2023-12-02 18:30:45 24 4
gpt4 key购买 nike

我正在尝试制作非常有意义的网址,但我想我做错了。

这有效:

from django.conf.urls.defaults import patterns, url
from places.views import explore_view

urlpatterns = patterns('',
url(r'', explore_view, name='explore'),
)

这不会:

from django.conf.urls.defaults import patterns, url
from places.views import explore_view

urlpatterns = patterns('',
url(r'(?P<countryorcategory>[0-9A-Za-z._%+-]+)', explore_view, name='explore'),
)

当我收到此错误时:

Reverse for 'explore' with arguments '()' and keyword arguments '{}' not found.

这是explore_view的代码:

def explore_view(request, countryorcategory=None):
"""
This is the explore view - to view places sugeested by ambassadors
"""
user = request.user
page = request.GET.get("page", 1)
per_page = request.GET.get("per_page", 20)
category_id = request.GET.get("category_id", None)

attrs = request.GET
lat = safe_attr(attrs, "lat", "float", None)
lon = safe_attr(attrs, "lon", "float", None)
q = request.GET.get('q', None)

if q and not lat or lon:
cache_key = 'GoogleGeocode-{}'.format(hashlib.md5(q.encode('UTF-8', 'replace')).hexdigest())
latlon = cache.get(cache_key)
if not latlon:
latlon = geocode(q)
if latlon:
cache.set(cache_key, latlon)
if latlon:
lat = latlon['lat']
lon = latlon['lng']

if not q:
q = ''

category_names = getattr(settings, "EXPLORE_CATEGORIES", [])
categories = [Category.objects.get(name=cat_name).serialize() for cat_name in category_names]

more = True
places = Place.objects.explore_places(user, category_id=category_id, lat=lat, lon=lon, page=page, per_page=20)

if len(places) != per_page:
more = False

return render_to_response('explore/main.html', {'places': places, 'categories': categories, 'category_id': category_id, 'lat': lat, 'lon': lon, 'more': more, 'q': q}, RequestContext(request))

最佳答案

这一行:

url(r'(?P<countryorcategory>[0-9A-Za-z._%+-]+)', explore_view, name='explore')

...正在定义一个在模板中采用参数 countryorcategory 的 url。您需要在模板中的以下任一网址上添加参数:

{% url 'explore' argument %}
{% url 'explore' countryorcategory=argument %}

如果您想继续使用具有相同名称的无参数网址,您可以定义具有相同名称但具有不同模式的其他网址。例如:

urlpatterns = patterns('',
url(r'(?P<countryorcategory>[0-9A-Za-z._%+-]+)', explore_view, name='explore'),
url(r'', explore_view, name='explore'),
)

那么 {% url 'explore' %} 应该可以在带参数和不带参数的情况下工作。

关于django - 无反向匹配在/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16298598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com