Django-url中的空字符串未重定向到索引页面

Posted

技术标签:

【中文标题】Django-url中的空字符串未重定向到索引页面【英文标题】:Django- empty string in url is not redirecting to the index page 【发布时间】:2019-08-02 18:02:01 【问题描述】:

我正在学习 django,在我的应用程序中,我有一个 urls.py,其中有 4 个 url 模式。如果在 url 末尾没有输入字符串,那么它必须根据代码重定向到索引页面,但它没有发生。休息网址工作正常。

我的 urls.py

from django.contrib import admin
from django.urls import path
from  .views  import  index, about, news
from django.conf import settings
from mainsite import views

urlpatterns = [
    path(r'^$', views.index, name='index'),
    path(r'about/', views.about, name='about'),
    path(r'news/', views.news, name='news'),
    path(r'admin/', admin.site.urls),
]

我的意见.py

from django.shortcuts import render
from datetime import datetime
from .models import Article

def index(request) :
    context = 
        'current_date': datetime.now(),
        'title': 'Home'
    
    return render(request, 'index.html', context )

def about(request) :
    context = 
        'current_date': datetime.now(),
        'title': 'About'
    
    return render(request, 'about.html', context )

def news(request) :
    populate_db()
    articles = get_articles()
    context = 
        'articles': articles,
        'current_date': datetime.now(),
        'title': 'News'
    
    return render(request, 'news.html', context )

def get_articles():
    result = Article.objects.all()
    return result

def populate_db():
    if Article.objects.count() == 0:
        Article(title = 'first item',  content = 'this is the first database item').save()
        Article(title = 'second item',  content = 'this is the second database item').save()
        Article(title = 'third item',  content = 'this is the third database item').save()

这是我遇到的错误 enter image description here

【问题讨论】:

【参考方案1】:

从以下位置更改您的 url 路径:

path(r'^$', views.index, name='index'),

path('', views.index, name='index'),

因为path 将字符串或带有尖括号的部分(如<username>)用于url 的动态部分。您的其他 url 模式定义也是如此:

path('about/', views.about, name='about'),
path('news/', views.news, name='news'),
path('admin/', admin.site.urls),

如果您打算将正则表达式用作 url 模式的一部分,请使用 re_path。

【讨论】:

我尝试使用 path('', views.index, name='index'),但它也不起作用【参考方案2】:

根据 Django Docs,你不能在 path() 中使用正则表达式,如果你想使用正则表达式,请在此处检查 path,然后使用此处指定的 re_path re_path。

【讨论】:

以上是关于Django-url中的空字符串未重定向到索引页面的主要内容,如果未能解决你的问题,请参考以下文章

成功登录后登录页面未重定向到主页

页面未重定向到给定链接 Mandrill

PHP标头未重定向到感谢页面

Nativescript后退按钮未重定向到正确的页面

Magento:支付完成后,paypal 标准支付未重定向到 Magento 成功页面

登录页面未重定向到另一页面