Django - пустая строка в URL не перенаправляет на страницу индекса - PullRequest
0 голосов
/ 12 марта 2019

Я изучаю django, и в моем приложении у меня есть urls.py, в котором есть 4 шаблона url. если в конце 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),
]

Мои views.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()

Это ошибка, которую я получаю введите описание изображения здесь

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Измените путь 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 .

0 голосов
/ 12 марта 2019

Согласно Django Docs вы не должны использовать регулярное выражение в path (), отметьте его здесь path , если вы хотите использовать регулярное выражение, тогда используйте re_path, указанный здесь re_path .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...