Django中的链接

1 投票
3 回答
1374 浏览
提问于 2025-04-17 13:40

我正在尝试让我的Django链接正常工作。所有的URL在手动输入时都能正常访问,但我搞不清楚内部导航怎么设置。它们的格式都是app.com/商店名/页面名,所以如果我在app.com/鞋店/产品页面,点击位置链接后应该能跳转到app.com/鞋店/位置页面。但我发现鞋店的部分丢失了。

这是一个示例视图:

def homepage(request, store_subdomain):
    store_db, store_products = database_selector(store_subdomain)
    return render_to_response('base.html', 
            {'store_name': store_db.name, 'store_subdomain':store_subdomain})

我的urls.py文件:

urlpatterns = patterns('',

url(r'^admin/', include(admin.site.urls)),
url(r'^(?P<store_subdomain>\w+)/$', homepage),
url(r'^(?P<store_subdomain>\w+)/products/$', products),
url(r'^(?P<store_subdomain>\w+)/shoppingcart/$', shoppingcart),
url(r'^(?P<store_subdomain>\w+)/checkout/$', checkout),
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
             {'document_root': settings.MEDIA_ROOT}),

)

还有我的导航标签:

<li><a href = "/">Home</a></li>
<li><a href = "/products/"}>Products</a></li> 
<li><a href = "/location/">Location</a></li>
<li><a href="mailto:{{store_db.email}}">Email Us</a> </li>

3 个回答

0

这里没有什么神奇的地方。你在导航中写了根目录绑定的链接。在这种情况下,我建议你使用Django的urlresolvers中的reverse()函数。

1
<a href="{% url home store_subdomain=value %}">Home</a>

这段代码是用来定义一个网址规则的。它的意思是,当用户访问一个特定的网页时,系统会根据这个规则来处理请求。

具体来说,url(r'^(?P<store_subdomain>\w+)/$', 'homepage', name='homepage') 这行代码可以拆解成几个部分:

  • url:这是一个函数,用来设置网址的规则。
  • r'^(?P<store_subdomain>\w+)/$':这是一个正则表达式,用来匹配网址的格式。这里的 store_subdomain 是一个变量,它会匹配网址中的一部分内容。
  • 'homepage':这是当网址匹配成功后,系统要调用的处理函数,通常是用来显示网页内容的。
  • name='homepage':这是给这个网址规则起的名字,方便在其他地方引用。

总的来说,这段代码的作用就是设置一个网址,当用户访问这个网址时,系统会根据规则找到对应的处理函数来显示网页。

3

使用命名的 网址模式

url(r'^(?P<store_subdomain>\w+)/$', homepage, name='home')

<li><a href="{% url home store_subdomain %}">Home</a></li>

撰写回答