Django 2.0: URL-путь к домашней странице / индексу - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь установить мою домашнюю страницу django, связанную с корнем моего сайта: т.е. http://127.0.0.1:8000/index/, но вместо этого я продолжаю получать ошибки, когда Django ищет myapp в качестве домашней страницы: http://127.0.0.1:8000/myapp/.Я просто хотел бы попасть на домашнюю страницу с «индексом» в URL вместо «myapp /»

Ошибка выглядит следующим образом:

Using the URLconf defined in Main.urls, Django tried these URL patterns, in this order:

admin/
[name='index']
[name='myapp_index']
publications/ [name='publications']
^static\/(?P<path>.*)$
The current path, myapp/, didn't match any of these.

Views.py

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

Main / urls

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

myapp / urls

from django.urls import path
from logbook import views

urlpatterns = [
    path('', views.index, name='index'),
    path('', views.myapp_index, name='myapp_index'),
    path('publications/', views.publications, name='publications'),
]

Теперь, если я изменю путь в Main / urls.py на path('myapp/', include('myapp.urls')),, я попаду на соответствующую домашнюю страницу, за исключением того, что я предпочел бы, чтобы вместо этого в URL был указан индекс /of "myapp /".

Я могу упустить что-то очень простоеЭто то, что я считаю своим MWE, рад добавить еще.

Ответы [ 5 ]

0 голосов
/ 02 января 2019

Это то, что сработало для меня (Django2) - указание на действие индекса в файле views.py приложения static_pages в качестве домашней страницы:

main urls.py:

 from django.contrib import admin
 from django.urls import path, include

 urlpatterns = [
     path('admin/', admin.site.urls),
     path('', include('static_pages.urls')), #included urls from static_pages app
 ]

static_pages/urls.py:

 from django.contrib import admin
 from django.urls import path
 from . import views

 urlpatterns = [
      path('', views.index, name="index"),
 ]

static_pages / views.py

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

 def index(request):
     return HttpResponse("First Django2 Message!")

Обратите внимание, что приложение "static_pages" добавлено в INSTALLED_APPS в settings.py.

Сейчас, позвонив http://127.0.0.1:8000/ Я получил: «Первое сообщение Django2!».

0 голосов
/ 28 декабря 2018

сначала вы должны выбрать одну из следующих строк в myapp.urls и удалить другие

вы не можете установить два представления для шаблонов с одним URL-адресом

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

у вас есть два решения для получения индекса/ в качестве основного URL

1. измените Main.urls как показано ниже

path('', include('myapp.urls')),

на

path('index/', include('myapp.urls')),

2. измените myapp.urls как показано ниже

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

на

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

Вы действительно изменили имя URL, которое использует в кодах Python не путь URL-адресов

edit Вы имеете в виду index / like следующее?

www.example.com /

, поэтому вы должны сделать это, как указано выше, но удалить "index /"

, чтобы вы не могли сделать это, как показано ниже:

изменить Main.urls, как показано ниже

path('', include('myapp.urls')),

на

path('^$', include('myapp.urls')),

или

изменить myapp.urls, как показано ниже

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

на

path('^$', views.index, name='index'),
0 голосов
/ 28 декабря 2018
path('myapp/', include('myapp.urls'))
path('index/', include('myapp.urls'))

Это может привести к желаемому результату.

0 голосов
/ 28 декабря 2018

Вы пробовали следующее:

Main / urls

 ...
 path(r'^', include('myapp.urls')),
 ...

myapp / urls

 ...
 path(r'^$', views.index, name='index'),
 # path('', views.myapp_index, name='myapp_index'), ## REMOVE THIS ROW ##
 ...
0 голосов
/ 28 декабря 2018

Это должно быть в основном urls.py

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

вместо my_app / urls.py

...