python - not - from django.urls import include, path
Django: de django.urls import reverse; ImportError: Ningún módulo llamado urls (1)
Estás en Django 1.9, deberías hacer:
from django.core.urlresolvers import reverse
La versión 1.10 es donde puedes hacer from django.urls import reverse
Esta pregunta ya tiene una respuesta aquí:
Estoy trabajando en el tutorial de DjangoProject con la aplicación de encuestas. Como dice el tutorial en la parte 4, estoy tratando de importar ''reverse'': from django.urls import reverse
pero obteniendo el error:
de importación django.urls inversa ImportError: ningún módulo llamado urls
Cambié el ROOT_URLCONF
a solo '' urls
'', sin embargo, tampoco funcionó.
Cualquier ayuda se agradece, gracias.
settings.py
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.9/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = ''3jyaq2i8aii-0m=fqm#7h&ri2+!7x3-x2t(yv1jutwa9kc)t!e''
# SECURITY WARNING: don''t run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
''polls.apps.PollsConfig'',
''django.contrib.admin'',
''django.contrib.auth'',
''django.contrib.contenttypes'',
''django.contrib.sessions'',
''django.contrib.messages'',
''django.contrib.staticfiles'',
]
MIDDLEWARE_CLASSES = [
''django.middleware.security.SecurityMiddleware'',
''django.contrib.sessions.middleware.SessionMiddleware'',
''django.middleware.common.CommonMiddleware'',
''django.middleware.csrf.CsrfViewMiddleware'',
''django.contrib.auth.middleware.AuthenticationMiddleware'',
''django.contrib.auth.middleware.SessionAuthenticationMiddleware'',
''django.contrib.messages.middleware.MessageMiddleware'',
''django.middleware.clickjacking.XFrameOptionsMiddleware'',
]
ROOT_URLCONF = ''mysite.urls''
TEMPLATES = [
{
''BACKEND'': ''django.template.backends.django.DjangoTemplates'',
''DIRS'': [],
''APP_DIRS'': True,
''OPTIONS'': {
''context_processors'': [
''django.template.context_processors.debug'',
''django.template.context_processors.request'',
''django.contrib.auth.context_processors.auth'',
''django.contrib.messages.context_processors.messages'',
],
},
},
]
WSGI_APPLICATION = ''mysite.wsgi.application''
# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.sqlite3'',
''NAME'': os.path.join(BASE_DIR, ''db.sqlite3''),
}
}
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
''NAME'': ''django.contrib.auth.password_validation.UserAttributeSimilarityValidator'',
},
{
''NAME'': ''django.contrib.auth.password_validation.MinimumLengthValidator'',
},
{
''NAME'': ''django.contrib.auth.password_validation.CommonPasswordValidator'',
},
{
''NAME'': ''django.contrib.auth.password_validation.NumericPasswordValidator'',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.9/topics/i18n/
LANGUAGE_CODE = ''en-us''
TIME_ZONE = ''UTC''
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/
STATIC_URL = ''/static/''
urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r''^admin/'', admin.site.urls),
url(r''^polls/'', include(''polls.urls'')),
]
encuestas / views.py
from django.http import HttpResponse, HttpResponseRedirect
from .models import Question, Choice
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
def index(request):
latest_question_list = Question.objects.order_by(''-pub_date'')[:5]
context = {
''latest_question_list'': latest_question_list,
}
return render(request, ''polls/index.html'', context)
def detail(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, ''polls/results.html'', {''question'' : question})
def results(request, questioin_id):
response = "you are looking at the results of question %s"
return HttpResponse(response % question_id)
def vote(request, question_id):
question = get_object_or_404(Question, pk=questioin_id)
try:
selected_choice = question.choice_set.get(pk=request.POST[''choice''])
except (KeyError, Choice.DoesNotExist):
return render(request, ''polls/detail.html'', {''question'': question,
''error_message'': "you didnt select a choice",
})
else:
selected_choice.votes += 1
selected_choice.save()
return HttpResponseRedirect(reverse(''polls:results'', args=
(question.id,)))
encuestas / urls.py
from django.conf.urls import url
from . import views
app_name = ''polls''
urlpatterns = [
url(r''^$'', views.index, name=''index''),
url(r''^(?P<question_id>[0-9]+)/$'', views.detail, name=''detail''),
url(r''^(?P<question_id>[0-9]+)/results/$'', views.results, name=''results''),
url(r''^(?P<question_id>[0-9]+)/vote/$'', views.vote, name=''vote''),
]