包含的URLconf'appName.urls'似乎没有任何模式 [英] The included URLconf 'appName.urls' does not appear to have any patterns in it

查看:45
本文介绍了包含的URLconf'appName.urls'似乎没有任何模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

检查)

settings.py (加密板):

  ...#安全警告:不要在生产中打开调试的情况下运行!调试=正确ALLOWED_HOSTS = []AUTH_USER_MODEL ="cryptousers.CryptoUser";#应用定义INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',线索",'rest_framework','前端','诺克斯',加密货币",'cryptocurrency',]...ROOT_URLCONF ='cryptoboard.urls' 

urls.py (加密板):

来自django.contrib的

 导入管理员从django.urls导入路径,包括urlpatterns = [path('',include('frontend.urls')),path('',include('leads.urls')),path('',include('cryptousers.urls')),path('',include('cryptocurrency.urls'))#< ==如果被注释掉则起作用] 

urls.py (加密货币):

  import sys从django.conf.urls导入URL从django.urls导入路径从 .导入视图urlpatterns = [路径('get_currency_latest/',views.get_latest_currency,name ='get_currency_latest'),#这曾经工作#url(r'^ get_currency_on_date/(?P< date_day> \ d {4}-\ d {2}-\ d {2})/$',#views.get_currency_on_date,name ='get_currency_on_date'),# # 样本:##http://127.0.0.1:8000/get_currency_between_dates/2020-11-24/2020-11-25#url(r'^ get_currency_between_dates/(?P< date_start_day> \ d {4}-\ d {2}-\ d {2})/(?? P< date_end_day> \ d {4}-\ d {2}-\ d {2})$',#views.get_currency_between_dates,name ='get_currency_between_dates')re_path(r'^ get_currency_on_date/(?P< date_day> \ d {4}-\ d {2}-\ d {2})/$',views.get_currency_on_date,name ='get_currency_on_date'),re_path(r'^ get_currency_between_dates/(?P< date_start_day> \ d {4}-\ d {2}-\ d {2})/(?P< date_end_day> \ d {4}-\ d {2}-\ d {2})$',views.get_currency_between_dates,name ='get_currency_between_dates')] 

无论上面的urls.py保持不变还是为空,都将引发相同的错误.

views.py (加密货币)

来自django.shortcuts的

 导入渲染导入json从django.shortcuts导入渲染从django.http导入HttpResponseRedirect,HttpResponse,JsonResponse从django.shortcuts导入get_object_or_404,渲染从django.urls导入反向从django.utils导入时区从django.utils.datetime_safe导入日期时间从django.views导入泛型从.coins_constants导入coin_id,IS_DEBUG_MODE,DATE_FORMAT从.get_coins_scheduler导入update_coins_table从.models导入货币从rest_framework.authentication导入SessionAuthentication,BasicAuthentication从rest_framework.permissions导入IsAuthenticated从rest_framework.response导入响应从rest_framework.views导入APIView从.setup_test_db.setup_debug_tables导入init_debug_tables如果是IS_DEBUG_MODE:print('[!!! INFO !!!]调试模式设置!使用生成的表')init_debug_tables()#不要在ui中使用djangodef get_latest_currency(self):"返回最新值"update_coins_table()up_to_date_currency = Currency.objects.order_by('-currency_value_in_dollars_date')[:len(coins_ids)]return JsonResponse({" up_to_date_currency" ;: list(up_to_date_currency.values())}) 

(此时所有视图都是函数).

models.py (加密货币):

django.db导入模型中的

 类DebugConf(models.Model):is_setup = models.BooleanField(默认= False)debug_setup_date = models.DateTimeField(auto_now_add = True)def __str __():返回self.is_setup货币类(models.Model):currency_name = models.CharField(max_length = 100,unique = True)currency_value = models.FloatField()currency_value_in_dollars = models.FloatField()currency_value_in_dollars_date = models.DateTimeField()def __str __():返回self.currency_name交易类(models.Model):transaction_type = models.CharField(max_length = 200)transaction_amount = models.FloatField()transaction_date = models.DateTimeField(auto_now_add = True)transaction_currency = models.ForeignKey(货币,on_delete = models.CASCADE)transaction_buyer = models.ForeignKey('cryptousers.CryptoUser',related_name ='transaction_buyer',on_delete = models.CASCADE)transaction_seller = models.ForeignKey('cryptousers.CryptoUser',related_name ='transaction_seller',on_delete = models.CASCADE)def __str __():返回self.transaction_currency 

完整堆栈跟踪:

 使用StatReloader监视文件更改正在执行系统检查...线程django-main-thread中的异常:追溯(最近一次通话):网址为591的文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ urls \ resolvers.py",第591行iter(模式)TypeError:模块"对象不可迭代上面的异常是以下异常的直接原因:追溯(最近一次通话):_bootstrap_inner中的文件"C:\ Users \ dev \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ threading.py",第916行self.run()运行中的文件"C:\ Users \ dev \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ threading.py",行864self._target(* self._args,** self._kwargs)包装中的文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ utils \ autoreload.py",第53行fn(* args,** kwargs)在内部运行中的文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ core \ management \ commands \ runserver.py",第118行self.check(display_num_errors = True)检查文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ core \ management \ base.py",行396数据库=数据库,在run_checks的第70行中,文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ core \ checks \ registry.py"new_errors =检查(app_configs = app_configs,数据库=数据库)文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ core \ checks \ urls.py",第13行,在check_url_config中返回check_resolver(resolver)在check_resolver的第23行中,文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ core \ checks \ urls.py"返回check_method()检查文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ urls \ resolvers.py",第408行用于self.url_patterns中的模式:__get__中的文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ utils \ functional.py",第48行res = instance .__ dict __ [self.name] = self.func(instance)文件"C:\ Users \ dev \ .virtualenvs \ crypto-currency-board-2JkLYBxc \ lib \ site-packages \ django \ urls \ resolvers.py",第598行,位于url_patterns中从e提高ImproperlyConfigured(msg.format(name = self.urlconf_name))django.core.exceptions.ImproperlyConfigured:包含的URLconf'cryptoboard.urls'似乎没有任何模式.如果您在文件中看到有效的模式,则说明问题可能是由循环导入引起的. 

大多数类似问题的答案都建议在字符串"urlpatterns"中查找拼写错误,但这似乎并非如此.我想念什么?

解决方案

我不确定它为什么起作用,但是删除所有表,重新创建和重新运行迁移,并对URL进行重新排序:

urls.py (加密板)

来自django.contrib的

 导入管理员从django.urls导入路径,包括urlpatterns = [path('',include('frontend.urls')),path('',include('leads.urls')),path('',include('cryptousers.urls')),path('',include('cryptocurrency.urls'))] 

来自django.contrib的

 导入管理员从django.urls导入路径,包括urlpatterns = [path('',include('cryptocurrency.urls')),#< =不依赖任何应用程序#以下(仅来自加密者的模型)path('',include('frontend.urls')),path('',include('leads.urls')),path('',include('cryptousers.urls')),] 

以我的情况工作.

循环错误导入异常消息似乎是一个笼统的消息,它不能仅由实际的循环导入引起.在调试器中运行 manage.py 时,发现其他东西中也缺少软件包(pika)(dramatiq需要)...

Checking the documentation doesn't show any potential cause for the error. I have a django project with a number of apps (dir layout:

)

settings.py (cryptoboard):

...
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

AUTH_USER_MODEL = "cryptousers.CryptoUser" 

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'leads',
    'rest_framework',
    'frontend',
    'knox',
    'cryptousers',
    'cryptocurrency',
]
...
ROOT_URLCONF = 'cryptoboard.urls'

urls.py (cryptoboard):

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

urlpatterns = [
    path('', include('frontend.urls')),
    path('', include('leads.urls')),
    path('', include('cryptousers.urls')),
    path('', include('cryptocurrency.urls')) # <== WORKS IF COMMENTED OUT
]

urls.py (cryptocurrency):

import sys

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

urlpatterns = [
    path('get_currency_latest/', views.get_latest_currency, name='get_currency_latest'),
    # this used to work 
    # url(r'^get_currency_on_date/(?P<date_day>\d{4}-\d{2}-\d{2})/$',
    #     views.get_currency_on_date, name='get_currency_on_date'),
    # # Sample:
    # #       http://127.0.0.1:8000/get_currency_between_dates/2020-11-24/2020-11-25 
    # url(r'^get_currency_between_dates/(?P<date_start_day>\d{4}-\d{2}-\d{2})/(?P<date_end_day>\d{4}-\d{2}-\d{2})$',
    #     views.get_currency_between_dates, name='get_currency_between_dates')
    re_path(r'^get_currency_on_date/(?P<date_day>\d{4}-\d{2}-\d{2})/$',
         views.get_currency_on_date, name='get_currency_on_date'),
    re_path(r'^get_currency_between_dates/(?P<date_start_day>\d{4}-\d{2}-\d{2})/(?P<date_end_day>\d{4}-\d{2}-\d{2})$',
        views.get_currency_between_dates, name='get_currency_between_dates')         
]

The same error is thrown regardless whether the urls.py above is as it is or empty.

views.py (cryptocurrency)

from django.shortcuts import render

import json

from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse, JsonResponse
from django.shortcuts import get_object_or_404, render
from django.urls import reverse
from django.utils import timezone
from django.utils.datetime_safe import datetime
from django.views import generic

from .coins_constants import coins_ids, IS_DEBUG_MODE, DATE_FORMAT
from .get_coins_scheduler import update_coins_table
from .models import Currency

from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView

from .setup_test_db.setup_debug_tables import init_debug_tables

if IS_DEBUG_MODE:
    print('[!!!INFO!!!] DEBUG MODE SET! USING GENERATED TABLES')
    init_debug_tables()


# Don't use django for ui
def get_latest_currency(self):
    """
    Return most up to date value
    """
    update_coins_table()
    up_to_date_currency = Currency.objects.order_by('-currency_value_in_dollars_date')[:len(coins_ids)]

    return JsonResponse({"up_to_date_currency": list(up_to_date_currency.values())})

(all views are functions at this point).

models.py (cryptocurrency):

from django.db import models

class DebugConf(models.Model):
    is_setup = models.BooleanField(default=False)
    debug_setup_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.is_setup


class Currency(models.Model):
    currency_name = models.CharField(max_length=100, unique=True)
    currency_value = models.FloatField()
    currency_value_in_dollars = models.FloatField()
    currency_value_in_dollars_date = models.DateTimeField()

    def __str__(self):
        return self.currency_name


class Transaction(models.Model):
    transaction_type = models.CharField(max_length=200)
    transaction_amount = models.FloatField()
    transaction_date = models.DateTimeField(auto_now_add=True)

    transaction_currency = models.ForeignKey(Currency, on_delete=models.CASCADE)
    transaction_buyer = models.ForeignKey('cryptousers.CryptoUser', related_name='transaction_buyer', on_delete=models.CASCADE)
    transaction_seller = models.ForeignKey('cryptousers.CryptoUser', related_name='transaction_seller', on_delete=models.CASCADE)

    def __str__(self):
         return self.transaction_currency

Full stack trace:

Watching for file changes with StatReloader
Performing system checks...

Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\urls\resolvers.py", line 591, in url_patterns
    iter(patterns)
TypeError: 'module' object is not iterable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\dev\AppData\Local\Programs\Python\Python36\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Users\dev\AppData\Local\Programs\Python\Python36\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\core\management\commands\runserver.py", line 118, in inner_run
    self.check(display_num_errors=True)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\core\management\base.py", line 396, in check
    databases=databases,
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\core\checks\registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
    return check_method()
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\urls\resolvers.py", line 408, in check
    for pattern in self.url_patterns:
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\dev\.virtualenvs\crypto-currency-board-2JkLYBxc\lib\site-packages\django\urls\resolvers.py", line 598, in url_patterns
    raise ImproperlyConfigured(msg.format(name=self.urlconf_name)) from e
django.core.exceptions.ImproperlyConfigured: The included URLconf 'cryptoboard.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

Most answers to similar questions suggest to look for typos in the string 'urlpatterns' but this doesn't seem to be the case here. What am I missing?

解决方案

I'm not so sure why it works, but deleting all tables, recreating and rerunning migrations, and reordering the urls:

urls.py (cryptoboard)

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

urlpatterns = [
    path('', include('frontend.urls')),
    path('', include('leads.urls')),
    path('', include('cryptousers.urls')),
    path('', include('cryptocurrency.urls')) 
]

to

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

urlpatterns = [
    path('', include('cryptocurrency.urls')), # <= DOES NOT DEPEND ON ANY OF THE APPS 
                                              # BELOW (ONLY A MODEL FROM CRYPTOUSERS)
    path('', include('frontend.urls')),
    path('', include('leads.urls')),
    path('', include('cryptousers.urls')),
]

works in my case.

The circular error import exception message seems to be an umbrella message in that, it cannot be caused only by an actual circular import. Running manage.py in the debugger revealed that a package (pika) was also missing (needed by dramatiq) among other stuff ...

这篇关于包含的URLconf'appName.urls'似乎没有任何模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆