【问题标题】:views and urlpattern: problems with import?视图和 urlpattern:导入问题?
【发布时间】:2016-04-20 22:44:56
【问题描述】:

我正在学习教程,但我遇到了一些问题......

我的url.py

urlpatterns = [
    url(r'^$', 'TasksManager.views.index.page', name="public_index"),
    url(r'^connection-TasksManager$', 'TasksManager.views.connection.page',
        name="public_connection"),
    ...
]

TasksManager 和视图是目录,索引和连接是文件 .py,页面是这些文件中的定义。我不知道为什么教程不让我在views.py中写视图

无论如何,它给我一个import error: No module named ' TasksManager' 我不知道 url.py 中导入了什么...

from . import TasksManager ? (它给出错误)

import TasksManager.index ? (也许它什么都不做)

我的目录结构:

Work_Manager
|__manage.py
|__TasksManager
|      |_ __init__.py
|      |_admin.py
|      |_apps.py
|      |_models.py
|      |_views.py (empty)
|      |_views
|          |_ __init__.py
|          |_index.py
|          |_connection.py
|          |_...
|__Work_Manager
       |_ __init__.py
       |_database.db
       |_settings.py
       |_url.py

如果我将index.pyconnection.py 放入TaskManager 目录并更改url(r'^$', 'TasksManager.connection.page', name="public_connection"), 中的url(我删除了.views。)地址有效,但我的模板(html)中的链接不:<a href="{% url 'public_connection' %}">Connection</a> 并给出同样的错误import error: No module named ' TasksManager'

它还给出了这个警告:支持 url() 的字符串视图参数已被弃用,并将在 Django 1.10 中删除(获取 TasksManager.views.index.page)。改为传递可调用对象。

感谢您的帮助

PS:我使用的是 Python 3.4 和 Django 1.9

完整的回溯:

    Environment:


Request Method: GET
Request URL: http://localhost:8000/

Django Version: 1.9.5
Python Version: 3.4.3
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'TasksManager']
Installed Middleware:
['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']


Template error:
In template C:\Python34\Scripts\Work_Manager\Work_manager\TasksManager\templates\en\public\index.html, error at line 58
   No module named ' TasksManager'   48 :       {% for city in array_city %}
   49 :         <li>
   50 :           {{ city }}
   51 :         </li>
   52 :       {% endfor %}
   53 :     </ul>
   54 : 
   55 :   <article>
   56 :     Hello world ! <br />
   57 :     <!--<a href="connection">Connection</a>-->
   58 :     <a href=" {% url 'public_connection' %} ">Connection</a>
   59 :     <a href="{% url 'create_developer' %}">Create developer</a>
   60 :     <a href="{% url 'create_supervisor' %}">Create supervisor</a>
   61 :     <a href="{% url 'create_project' %}">Create project</a>
   62 :   </article>
   63 : {% endblock %}
   64 : 

Traceback:

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in get_callable
  115.         mod = import_module(mod_name)

File "C:\Python34\lib\importlib\__init__.py" in import_module
  109.     return _bootstrap._gcd_import(name[level:], package, level)

During handling of the above exception (No module named ' TasksManager'), another exception occurred:

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\handlers\base.py" in get_response
  149.                     response = self.process_exception_by_middleware(e, request)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\handlers\base.py" in get_response
  147.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python34\Scripts\Work_Manager\Work_manager\TasksManager\views\index.py" in page
  39.     return render(request, 'en/public/index.html', locals())

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\shortcuts.py" in render
  67.             template_name, context, request=request, using=using)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\loader.py" in render_to_string
  97.         return template.render(context, request)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\backends\django.py" in render
  95.             return self.template.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render
  206.                     return self._render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in _render
  197.         return self.nodelist.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render
  992.                 bit = node.render_annotated(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render_annotated
  959.             return self.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\loader_tags.py" in render
  173.         return compiled_parent._render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in _render
  197.         return self.nodelist.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render
  992.                 bit = node.render_annotated(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render_annotated
  959.             return self.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\loader_tags.py" in render
  69.                 result = block.nodelist.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render
  992.                 bit = node.render_annotated(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\base.py" in render_annotated
  959.             return self.render(context)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\template\defaulttags.py" in render
  499.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in reverse
  600.     return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in _reverse_with_prefix
  448.             self._populate()

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in _populate
  334.                 lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in callback
  255.         self._callback = get_callable(self._callback_str)

File "C:\Python34\lib\functools.py" in wrapper
  448.                 result = user_function(*args, **kwds)

File "c:\Python34\Scripts\Work_Manager\myvenv\lib\site-packages\django\core\urlresolvers.py" in get_callable
  121.             if submod and not module_has_submodule(import_module(parentmod), submod):

File "C:\Python34\lib\importlib\__init__.py" in import_module
  109.     return _bootstrap._gcd_import(name[level:], package, level)

Exception Type: ImportError at /
Exception Value: No module named ' TasksManager'

【问题讨论】:

标签: python django url


【解决方案1】:

您的文件夹中似乎没有 __init__.py 文件。这可以只是一个空文件。

__init__.py 文件是让 Python 处理 包含包的目录;这样做是为了防止 无意中使用通用名称(例如字符串)的目录 隐藏稍后出现在模块搜索路径上的有效模块。在 最简单的情况,__init__.py 可以只是一个空文件,但它可以 还执行包的初始化代码或设置__all__ 变量,稍后介绍

我相信你的进口应该是

from TaskManager import index 

import TaskManager

more ...

【讨论】:

  • 感谢@v1k45 我没有意识到 __ 在复制粘贴时已被删除。不知道为什么。
  • 发生这种情况是因为双下划线代表 Markdown 中的粗体/强文本格式
  • @e4c5 有__init__.py(空)。我编辑了我的目录结构
  • 什么都没有......我添加了两个导入,但我没有看到任何变化......它给出了同样的错误。我添加了回溯。 PS我使用Python 3.4(你的链接是python 2.x)
【解决方案2】:

我解决了!

我的 url.py 中有一个数字错误现在它可以工作了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2020-04-09
    • 2021-12-05
    相关资源
    最近更新 更多