【问题标题】:internal url redirection in djangodjango中的内部url重定向
【发布时间】:2015-11-10 17:35:05
【问题描述】:

我对 Django 还很陌生(虽然有 Python 经验)。我正在尝试第一次使用它创建一个新网站,这个问题困扰着我。

这是用户流程:

  1. 用户访问我的网站 www.newco.com
  2. 首页和“登录”、“注册”、“关于”等链接向他致意。

  3. 用户点击这些链接并转到相应的页面。

这是我的根 urlconf:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^$',include('homepage.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/$', include('userlogin.urls')),
    url(r'^signup/$', include('userlogin.urls'))

]

这是我的主页.url:

from django.conf.urls import url
from . import views

urlpatterns=[
  url(r'^$',views.index,name='index'),
  url(r'^about$',views.about,name='about'),

]

最后是我的 homepage.views 文件:

from django.shortcuts import render

def index(request):

    return render(
        request,
        'index.html'

    )



def about(request):
    return render(
        request,
        'about.html'


     )

当我转到我的开发服务器的主页时,主页会正确呈现。我尝试了两种访问“关于我们”页面的方法:

  1. 我将 URL 硬编码为 <a href="/about"> About us </a>。这将我重定向到主页。

  2. 我将 URL 编码为 {% url "about" %}。这给了我错误:Reverse for 'about' with arguments '()' and keyword arguments '{}' not found。尝试了 1 种模式:['$about$'].

我应该如何处理这个问题,因为这是一个更大问题的特定实例。感谢阅读。

【问题讨论】:

    标签: python django redirect


    【解决方案1】:

    你得到这个错误是因为你已经这样定义了:

    url(r'^$',include('homepage.urls')),
    

    它应该是:

    url(r'^',include('homepage.urls')),
    

    当您使用$ 时,您是在告诉正则表达式到此结束。这应该可以解决您的问题。

    【讨论】:

    • 那么 url 标签呢?我应该如何处理它们?
    • @AnkitKulshrestha 没问题,你可以使用标签-> {% url "about" %}
    • 感谢您提供有关正则表达式的指针,但它确实有效。但是,我不想对 url 进行硬编码,你能告诉我更多关于 reverse 方法的信息吗?
    • 你不需要硬编码 url,你可以使用 url 标签,就像我在使用你的 url 名称并给出所需参数之前所说的那样。
    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 2012-10-03
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 2016-06-24
    相关资源
    最近更新 更多