Python Django 1.11 don';t包含URL.py
您好,我正在使用我的第一个Django应用程序,我遇到了下一个问题: 包含的URLconf“eventus.url”似乎没有任何 其中的模式。如果在文件中看到有效的模式,则问题 可能是由循环导入引起的 我的文件events/url.py是:Python Django 1.11 don';t包含URL.py,python,django,Python,Django,您好,我正在使用我的第一个Django应用程序,我遇到了下一个问题: 包含的URLconf“eventus.url”似乎没有任何 其中的模式。如果在文件中看到有效的模式,则问题 可能是由循环导入引起的 我的文件events/url.py是: from django.conf.urls import url, include from .views import IndexView, MainPanelView, CreateEvent, EventDetail, EventEdit, Event
from django.conf.urls import url, include
from .views import IndexView, MainPanelView, CreateEvent, EventDetail, EventEdit, EventDelete
urlpatterns = [
#url(r'^$',views.index, name="index"),
url(r'^$',IndexView.as_view(), name="index"),
url(r'^panel/$', MainPanelView.as_view(), name="panel"),
url(r'^panel/evento/nuevo/$',CreateEvent.as_view(), name="nuevo"),
url(r'^panel/evento/(?P<pk>\d+)/$',EventDetail.as_view(), name="detalle"),
url(r'^panel/evento/editar/(?P<pk>\d+)/$',EventEdit.as_view(), name="editar"),
url(r'^panel/evento/eliminar/(?P<pk>\d+)/$',EventDelete.as_view(), name="eliminar"),
]
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
urlpatterns = [
url(r'^', include('myapps.events.urls', namespace="events_app")),
url(r'^admin/', admin.site.urls),
]
if settings.DEBUG:
urlpatterns = [
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}
),
]#
from django.db import models
from django.template.defaultfilters import slugify
from django.conf import settings
# Create your models here.
class TimeStampModel(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateField(auto_now=True)
class Meta:
abstract = True
class Category(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(editable=False)
def save(self, *args, **kwargs):
if not self.id:
self.slug =slugify(self.name)
super(Category, self).save (*args,**kwargs)
def __unicode__(self):
return self.name
class Event(TimeStampModel):
name = models.CharField(max_length=200, unique=True)
slug = models.SlugField(editable=False)
summary = models.TextField(max_length=255)
content = models.TextField()
category = models.ForeignKey(Category)
place = models.CharField(max_length=50)
start = models.DateTimeField()
finish = models.ImageField(upload_to= 'events')
is_free = models.BooleanField(default=True)
amout = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
views = models.PositiveIntegerField(default=0)
organizer = models.ForeignKey(settings.AUTH_USER_MODEL)
def save(self, *args, **kwargs):
if not self.id:
self.slug =slugify(self.name)
super(Event, self).save (*args,**kwargs)
def __unicode__(self):
return self.name
class Assistant (TimeStampModel):
Assistant = models.ForeignKey(settings.AUTH_USER_MODEL)
event = models.ManyToManyField(Event)
attended = models.BooleanField(default=False)
has_paid = models.BooleanField(default=False)
def __unicode__(self):
return "%s %s" % (self.assistant.username , self.event.name)
class Comments(TimeStampModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
event = models.ForeignKey(Event)
content = models.TextField()
def __unicode__(self):
return "%s %s" % (self.user.username, self.event.name)
我的URL.py是:
from django.conf.urls import url, include
from .views import IndexView, MainPanelView, CreateEvent, EventDetail, EventEdit, EventDelete
urlpatterns = [
#url(r'^$',views.index, name="index"),
url(r'^$',IndexView.as_view(), name="index"),
url(r'^panel/$', MainPanelView.as_view(), name="panel"),
url(r'^panel/evento/nuevo/$',CreateEvent.as_view(), name="nuevo"),
url(r'^panel/evento/(?P<pk>\d+)/$',EventDetail.as_view(), name="detalle"),
url(r'^panel/evento/editar/(?P<pk>\d+)/$',EventEdit.as_view(), name="editar"),
url(r'^panel/evento/eliminar/(?P<pk>\d+)/$',EventDelete.as_view(), name="eliminar"),
]
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
urlpatterns = [
url(r'^', include('myapps.events.urls', namespace="events_app")),
url(r'^admin/', admin.site.urls),
]
if settings.DEBUG:
urlpatterns = [
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}
),
]#
from django.db import models
from django.template.defaultfilters import slugify
from django.conf import settings
# Create your models here.
class TimeStampModel(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateField(auto_now=True)
class Meta:
abstract = True
class Category(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(editable=False)
def save(self, *args, **kwargs):
if not self.id:
self.slug =slugify(self.name)
super(Category, self).save (*args,**kwargs)
def __unicode__(self):
return self.name
class Event(TimeStampModel):
name = models.CharField(max_length=200, unique=True)
slug = models.SlugField(editable=False)
summary = models.TextField(max_length=255)
content = models.TextField()
category = models.ForeignKey(Category)
place = models.CharField(max_length=50)
start = models.DateTimeField()
finish = models.ImageField(upload_to= 'events')
is_free = models.BooleanField(default=True)
amout = models.DecimalField(max_digits=5, decimal_places=2, default=0.00)
views = models.PositiveIntegerField(default=0)
organizer = models.ForeignKey(settings.AUTH_USER_MODEL)
def save(self, *args, **kwargs):
if not self.id:
self.slug =slugify(self.name)
super(Event, self).save (*args,**kwargs)
def __unicode__(self):
return self.name
class Assistant (TimeStampModel):
Assistant = models.ForeignKey(settings.AUTH_USER_MODEL)
event = models.ManyToManyField(Event)
attended = models.BooleanField(default=False)
has_paid = models.BooleanField(default=False)
def __unicode__(self):
return "%s %s" % (self.assistant.username , self.event.name)
class Comments(TimeStampModel):
user = models.ForeignKey(settings.AUTH_USER_MODEL)
event = models.ForeignKey(Event)
content = models.TextField()
def __unicode__(self):
return "%s %s" % (self.user.username, self.event.name)
下一个错误是:
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/base.py", line 327, in execute
self.check()
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/base.py", line 359, in check
include_deployment_checks=include_deployment_checks,
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/management/base.py", line 346, in _run_checks
return checks.run_checks(**kwargs)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/checks/registry.py", line 81, in run_checks
new_errors = check(app_configs=app_configs)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/checks/urls.py", line 16, in check_url_config
return check_resolver(resolver)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/core/checks/urls.py", line 26, in check_resolver
return check_method()
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/urls/resolvers.py", line 254, in check
for pattern in self.url_patterns:
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/utils/functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/urls/resolvers.py", line 405, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/utils/functional.py", line 35, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/urls/resolvers.py", line 398, in urlconf_module
return import_module(self.urlconf_name)
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 978, in _gcd_import
File "<frozen importlib._bootstrap>", line 961, in _find_and_load
File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
File "/Users/dmuino/.virtualenvs/Pruebas/CursoProDjango/eventus/eventus/urls.py", line 27, in <module>
{'document_root': settings.MEDIA_ROOT}
File "/Users/dmuino/.virtualenvs/Pruebas/lib/python3.6/site-packages/django/conf/urls/__init__.py", line 85, in url
raise TypeError('view must be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().
我不知道问题出在哪里,因为在它正常工作之前,但现在我不知道问题出在哪里,我只更改了events/url.py,从基于函数的视图到基于类的视图,但是在文件中,在文件中的新视图之前有旧视图的注释。回溯显示
事件/views.py的第97行出现错误:
success_url = reverse_lazy(reverse('events_app:panel'))
设置视图的success\u url
时,不能调用reverse
。它会导致Django在加载url配置之前尝试反转url,从而导致“似乎没有任何模式”错误消息
解决方法是使用reverse\u lazy
。你有reverse\u lazy(reverse(…)
,这没有意义。将其更改为仅使用反转\u lazy
:
success_url = reverse_lazy('events_app:panel')
您的第二个错误“视图必须是可调用的”,是因为为媒体文件提供服务的代码使用了字符串'django.views.static.service'
。这已过时,无法与Django 1.10+一起使用。更新至:
在base.py中添加
INSTALLED_APPS += ['myapps.events',]
我需要使用reverse,因为它是一个表单,我需要在帖子中发送数据,这将有其他问题,而不是这个问题。相信我,使用reverse\u lazy(reverse(…)
)是没有意义的。回溯告诉您该行发生了错误。Alasdair感谢您的帮助,但我也有同样的问题。您没有名为“myapps.url”的模块。
,因为您将代码更改为url(r'',include('myapps.url')),
,正如@Julipels所建议的那样。这不起作用,因为你没有文件myapps/url.py
,所以你应该把它改回以前的样子。你的问题和回溯表明你的代码中仍然有反向懒惰(反向(…)
。将它改为反向懒惰(…)
。您还有success\u url=Ureverse\u lazy('events\u app:panel')
这是一个bug。我已经安装了它
INSTALLED_APPS += ['myapps.events',]