Python:';模块';对象没有属性';注销视图';

Python:';模块';对象没有属性';注销视图';,python,django,Python,Django,我目前正在尝试实现注销到django站点的功能,在虚拟环境中尝试使用命令python manage.py runserver时,出现以下错误: (ll_env) C:\Users\me\Desktop\learning_log>python manage.py runserver Performing system checks... Unhandled exception in thread started by <function wrapper at 0x0000000006

我目前正在尝试实现注销到django站点的功能,在虚拟环境中尝试使用命令python manage.py runserver时,出现以下错误:

(ll_env) C:\Users\me\Desktop\learning_log>python manage.py runserver
Performing system checks...

Unhandled exception in thread started by <function wrapper at 0x0000000006693BA8>
Traceback (most recent call last):
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\utils\autoreload.py", line 228, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\management\commands\runserver.py", line 125, in inner_run
    self.check(display_num_errors=True)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\management\base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\management\base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\checks\urls.py", line 16, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\core\checks\urls.py", line 26, in check_resolver
    return check_method()
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\urls\resolvers.py", line 254, in check
    for pattern in self.url_patterns:
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\urls\resolvers.py", line 405, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\urls\resolvers.py", line 398, in urlconf_module
    return import_module(self.urlconf_name)
  File "c:\users\me\python27\Lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\me\Desktop\learning_log\learning_log\urls.py", line 22, in <module>
    url(r'^users/', include('users.urls', namespace='users')),
  File "C:\Users\me\Desktop\learning_log\ll_env\lib\site-packages\django\conf\urls\__init__.py", line 50, in include
    urlconf_module = import_module(urlconf_module)
  File "c:\users\me\python27\Lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Users\me\Desktop\learning_log\users\urls.py", line 13, in <module>
    url(r'^logout/$', views.logout_view, name='logout'),
AttributeError: 'module' object has no attribute 'logout_view'
上述文件中最近添加的内容是:

    # Logout page
    url(r'^logout/$', views.logout_view, name='logout'),
以下代码作为最近添加的代码添加到my views.py文件的末尾:

from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.contrib.auth import logout

def logout_view(request):
    """Log the user out."""
    logout(request)
    return HttpResponseRedirect(reverse('learning_logs:index'))
这是my base.html文件:

<p>
  <a href="{% url 'learning_logs:index' %}">Learning Log</a> -
  <a href="{% url 'learning_logs:topics' %}">Topics</a> -
  {% if user.is_authenticated %}
    Hello, {{ user.username }}.
    <a href="{% url 'users:logout' %}">log out</a>
  {% else %}
    <a href="{% url 'users:login' %}">log in</a>
  {% endif %}
</p>

{% block content %}{% endblock content %}
    <a href="{% url 'users:logout' %}">log out</a>

-
-
{%if user.u经过身份验证%}
您好,{user.username}。
{%else%}
{%endif%}

{%block content%}{%endblock content%}
这是我的base.html文件最近添加的内容:

<p>
  <a href="{% url 'learning_logs:index' %}">Learning Log</a> -
  <a href="{% url 'learning_logs:topics' %}">Topics</a> -
  {% if user.is_authenticated %}
    Hello, {{ user.username }}.
    <a href="{% url 'users:logout' %}">log out</a>
  {% else %}
    <a href="{% url 'users:login' %}">log in</a>
  {% endif %}
</p>

{% block content %}{% endblock content %}
    <a href="{% url 'users:logout' %}">log out</a>


在上述添加之前,代码运行良好。了解我,这可能是一个简单的解决办法,但有人有解决这个问题的办法吗?我目前正在使用Django 1.11.7和Python 2.7.14。

当您在
users\url.py中使用相对导入时

from . import views
这相当于

from users import views
但是,听起来您的
注销\u视图
位于
学习\u logs\views.py
中。如果是这种情况,则应将导入更改为

from learning_logs import views
请注意,Django有一个
logout
视图,因此您不必编写自己的视图。将导入和URL模式更改为:

from django.contrib.auth.views import logout

url(r'^logout/$', logout, name='logout'),
然后在设置中进行设置,以便Django在注销用户后重定向到索引:

LOGOUT_REDIRECT_URL = 'learning_logs:index'

问题可能出现在的导入行
中。导入视图
。views.py与url.py在同一应用程序中吗?不同的url.py文件与views.py在同一目录中,但从外观上看,所有文件都包含在同一应用程序中。包含我所有文件的文件夹名为learning_log。文件夹里有我在这场折磨中所需要的一切,包括两个文件夹;前者称为学习日志,后者称为用户。前者包含views.py文件以及其他url.py文件,该文件负责处理站点上的主题和条目。后者包含我在原始帖子中提到的url.py文件&a blank views.py。