Python:';模块';对象没有属性';注销视图';
我目前正在尝试实现注销到django站点的功能,在虚拟环境中尝试使用命令python manage.py runserver时,出现以下错误: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
(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。