Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 装饰视图导致ViewDoesNotExister错误_Python_Django - Fatal编程技术网

Python 装饰视图导致ViewDoesNotExister错误

Python 装饰视图导致ViewDoesNotExister错误,python,django,Python,Django,reverse('main_page')适用于Django shell $ python manage.py shell In [1]: import auth_lifecycle.view__profile In [2]: from django.core.urlresolvers import reverse In [3]: reverse('main_page') Out[3]: '/auth_lifecycle/' 但是取消注释该视图文件中的login\u是必需的decor

reverse('main_page')
适用于Django shell

$ python manage.py shell
In [1]: import auth_lifecycle.view__profile
In [2]: from django.core.urlresolvers       import reverse
In [3]: reverse('main_page')
Out[3]: '/auth_lifecycle/'
但是取消注释该视图文件中的
login\u是必需的
decorator

from django.contrib.auth.decorators import login_required
from django.core.urlresolvers       import reverse
from django.shortcuts               import render
from django.template                import RequestContext

#@login_required(login_url=reverse('main_page'))
def get_rendered(request):
    return  render(request, 'auth_lifecycle/user_profile.html',
                   context_instance=RequestContext(request))
然后重新启动shell并尝试

import auth_lifecycle.view__profile
原因

ViewDoesNotExist:无法导入身份验证\u lifecycle.view\u profile.get\u rendered。模块验证生命周期中不存在视图。查看配置文件。

为什么?


完全回溯:

In [1]: import auth_lifecycle.view__profile
---------------------------------------------------------------------------
ViewDoesNotExist                          Traceback (most recent call last)
<ipython-input-1-f8b0669189a9> in <module>()
----> 1 import auth_lifecycle.view__profile

/home/jeffy/django_files/django_auth_lifecycle/auth_lifecycle/view__profile.py in <module>()
     19 #After the login view is created, change this to 'login':
     20 PROFILE_LOGGED_OUT_REDIRECT_URL_NAME='main_page'
---> 21 reverse('main_page')
     22 @login_required(login_url='http://usatoday.com')
     23 #@login_required(login_url=reverse(PROFILE_LOGGED_OUT_REDIRECT_URL_NAME))

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in reverse(viewname, urlconf, args, kwargs, prefix, current_app)
    544             resolver = get_ns_resolver(ns_pattern, resolver)
    545
--> 546     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
    547
    548 reverse_lazy = lazy(reverse, str)

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in _reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs)
    408
    409         if not self._populated:
--> 410             self._populate()
    411
    412         try:

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in _populate(self)
    290                 else:
    291                     parent_pat = pattern.regex.pattern
--> 292                     for name in pattern.reverse_dict:
    293                         for matches, pat, defaults in pattern.reverse_dict.getlist(name):
    294                             new_matches = normalize(parent_pat + pat)

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in reverse_dict(self)
    313         language_code = get_language()
    314         if language_code not in self._reverse_dict:
--> 315             self._populate()
    316         return self._reverse_dict[language_code]
    317

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in _populate(self)
    301             else:
    302                 bits = normalize(p_pattern)
--> 303                 lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))
    304                 if pattern.name is not None:
    305                     lookups.appendlist(pattern.name, (bits, p_pattern, pattern.default_args))

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in callback(self)
    229             return self._callback
    230
--> 231         self._callback = get_callable(self._callback_str)
    232         return self._callback
    233

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/functools.py in wrapper(*args, **kwds)
    426                     hits += 1
    427                     return result
--> 428                 result = user_function(*args, **kwds)
    429                 cache[key] = result
    430                 misses += 1

/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in get_callable(lookup_view, can_fail)
    116                     raise ViewDoesNotExist(
    117                         "Could not import %s. View does not exist in module %s." %
--> 118                         (lookup_view, mod_name))
    119     return lookup_view
    120

ViewDoesNotExist: Could not import auth_lifecycle.view__profile.get_rendered. View does not exist in module auth_lifecycle.view__profile.
[1]中的
:导入身份验证生命周期视图配置文件
---------------------------------------------------------------------------
ViewDoesNotExist回溯(最近一次调用上次)
在()
---->1导入验证\u生命周期。查看\u配置文件
/home/jeffy/django_files/django_auth_lifecycle/auth_lifecycle/view_profile.py in()
19#创建登录视图后,将其更改为“登录”:
20配置文件\u已注销\u重定向\u URL\u NAME='main\u页面'
--->21反向(“主页面”)
22@login\u必需(login\u url=)http://usatoday.com')
23#@需要登录(登录url=reverse(配置文件#已登录#退出#重定向(url)名称))
/home/jeffy/django_files/django_auth_lifecycle\u venv/lib/python3.4/site-packages/django/core/urlresolvers.py(视图名、urlconf、args、kwargs、前缀、当前_应用程序)
544冲突解决程序=获取冲突解决程序(ns模式,冲突解决程序)
545
-->546将iri_返回到_uri(解析器。使用_前缀(视图、前缀、*args、**kwargs))反向_)
547
548反向_lazy=lazy(反向,str)
/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in_reverse_带有前缀(self、lookup_view、_prefix、*args、**kwargs)
408
409如果不是自己填写的:
-->410自
411
412试试:
/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in_populate(self)
290其他:
291 parent_pat=pattern.regex.pattern
-->292对于模式中的名称。反向命令:
293对于匹配项,pat,模式中的默认值。反向dict.getlist(名称):
294新匹配=规范化(父匹配+父匹配)
/home/jeffy/django_files/django_auth_lifecycle\u venv/lib/python3.4/site-packages/django/core/urlresolvers.py,反向输入(self)
313语言代码=获取语言()
314如果语言代码不在self中,则相反:
-->315自
316返回自我。反向指令[语言代码]
317
/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py in_populate(self)
301其他:
302位=规格化(p_模式)
-->303查找.appendlist(pattern.callback,(bits,p_pattern,pattern.default_args))
304如果pattern.name不是None:
305查找.appendlist(pattern.name,(bits,p_pattern,pattern.default_args))
/回调中的home/jeffy/django_files/django_auth_lifecycle\u venv/lib/python3.4/site-packages/django/core/urlresolvers.py(self)
229返回自我。\u回调
230
-->231 self.\u callback=get\u callable(self.\u callback\u str)
232返回自我。\u回调
233
/包装中的home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/functools.py(*args,**kwds)
426次点击+=1
427返回结果
-->428结果=用户函数(*args,**kwds)
429缓存[键]=结果
430次未命中+=1
/home/jeffy/django_files/django_auth_lifecycle_venv/lib/python3.4/site-packages/django/core/urlresolvers.py可调用(查找视图,可能失败)
116.提出观点,提出论点(
117“无法导入%s。模块%s中不存在视图”。%
-->118(查找视图、模块名称))
119返回查找视图
120
ViewDoesNotExist:无法导入验证生命周期。查看配置文件。获取渲染。视图在模块身份验证生命周期中不存在。视图配置文件。
更改以修复它

from django.contrib.auth.decorators import login_required
from django.core.urlresolvers       import reverse_lazy
from django.shortcuts               import render
from django.template                import RequestContext

@login_required(login_url=reverse_lazy('main_page'))
def get_rendered(request):
    return  render(request, 'auth_lifecycle/user_profile.html',
                   context_instance=RequestContext(request))
仅导入视图文件意味着URL尚未加载<代码>反向要求URL已加载<代码>反向_lazy没有