Как заставить django распознавать два URL? - PullRequest
0 голосов
/ 21 ноября 2018

Я совершенно новичок в Django и веб-программировании, и я даже не знаю, как задать этот вопрос достаточно точно.Извините меня, если я прошу что-то очевидное.

Я пытаюсь поместить в одну папку два разных URL-адреса в одном файле urls.py.Я заметил, что Django не распознает их и всегда открывает первый.

Это файл моего приложения urls.py:

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

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

Это мой файл prooject urls.py:

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', include('second_app.urls')),
    url(r'^help/', include('second_app.urls'))
]

и вот мой views.py, общий для обеих страниц:

from django.shortcuts import render
from django.http import HttpResponse


def help(request):
    help_dict = {'help_insert':'HELP PAGE'}
    return render(request, 'second_app/help.html', context=help_dict)



def index(request):
    my_dict = {'insert_me':'INDEX'}
    return render(request, 'second_app/index.html', context=my_dict)

А теперь, когда я пытаюсь запросить http://127.0.0.1:8000/help,, все работает нормально, я могусм. «HELP PAGE», но когда я запрашиваю http://127.0.0.1:8000/index, ничего не меняется.

Как это исправить?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

В файле url.py вашего приложения оба правила совпадают.Давайте проанализируем это.Во-первых, широкий проект urls.py:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', include('second_app.urls')),
    url(r'^help/', include('second_app.urls'))
]

Итак, независимо от того, собираетесь ли вы на index/ или help/, вы в конечном итоге смотрите на second_app.urls.Пока все хорошо, это может иметь смысл ...

Но тогда:

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

Независимо от того, как вы попали сюда (через index / или help /), первое правило будетсопоставьте, если у вас больше ничего нет в URL (в конце концов, он понятия не имеет, как вы дошли до этой точки), и вы получите представление справки.Учитывая этот файл, просто нет способа узнать, что вы хотели перейти к «индексу».Думайте об этом файле как о едином объекте, как только вы попадете сюда.Он не знает, что ему предшествует.Он просто пытается соответствовать тому, что ему дано в данный момент.

0 голосов
/ 21 ноября 2018

У вас неверная конфигурация в URL-адресах, обычно они настроены следующим образом.

В файле URL вашего приложения:

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

urlpatterns = [
    url(r'^help/$', views.help, name='help'),
    url(r'^index/$', views.index, name='index'),
]

В файле URL вашего проекта:

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('second_app.urls')),
]
...