¿Por qué obtengo un 404 en esto?

Este es mi archivo mysite / urls.py:

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

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

Y este es mi archivo mysite / personal / urls.py

from django.conf.urls import url
from . import views
urlpatterns =[url(r'^$',views.index, name='index')]

La mysite / personal / views.py

from django.shortcuts import render

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

Después de eso, he creado la carpeta de plantillas como templates / personal / header.html. El archivo se ve así

<body class="body" style="background-color:#f6f6f6">
<div>
   {% block content %}
   {% endblock %}   
</div>
</body>   

Ahora sobre el home.html en la misma carpeta

{% extends "personal/header.html" %}
{% block content %}
<p>Hey! Welcome to my website! Well, I wasn't expecting guests. Um, my name is HVS. I am a programmer.</p>
{% endblock %}

TAMBIÉN HE INSTALADO LA APLICACIÓN EN el archivo settings.py en el subdirectorio mysite pero aún cuando ejecuto el

">python manage.py runserver"

Funciona bien, pero la página me dice que la URL no se encuentra 404 !!

Esta es la salida de mi navegador:

Screenshot

Estoy usando Windows 8, python 3 y django 1.9

-2
Hitvardhan Singh Solanki 10 may. 2016 a las 10:23

3 respuestas

La mejor respuesta

Debe eliminar el $ de su urls.py principal donde incluye personal.urls:

url(r'^/', include('personal.urls')),

El especificador $ siempre coincidirá con el final de la cadena (es decir, su URL) y no podrá incluir ninguna ruta adicional más allá.

1
Selcuk 10 may. 2016 a las 07:28

De acuerdo con django docs:

La función include () permite hacer referencia a otros URLconfs. Tenga en cuenta que las expresiones regulares para la función include () no tienen un $ (carácter de coincidencia de fin de cadena) sino una barra inclinada final

Entonces deberías cambiarlo a esto:

url(r'^/', include('personal.urls'))
2
Amin Alaee 10 may. 2016 a las 07:31

Esta url aquí nunca coincidirá

r'^$/'

El $ coincide con el final de la cadena. Eso significa que nunca es posible que aparezca un / después.

Probablemente quieras

url(r'^personal/', include('personal.urls')),
1
Brendan Abel 10 may. 2016 a las 07:28