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 ';str';对象不可调用_Python_Django - Fatal编程技术网

Python ';str';对象不可调用

Python ';str';对象不可调用,python,django,Python,Django,我在django遇到了一个问题: 'str' object is not callable 代码: url.py应用程序通常为: from django.conf.urls import patterns, include, url from django.contrib.auth.views import login, logout_then_login from usuarios.views import Registro urlpatterns = patterns('', u

我在django遇到了一个问题:

'str' object is not callable
代码:

url.py应用程序通常为:

from django.conf.urls import patterns, include, url
from django.contrib.auth.views import login, logout_then_login
from usuarios.views import Registro

urlpatterns = patterns('',
    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name':'registration/login.html'},
                name='login'),

        url(r'^cerrar/$', 'django.contrib.auth.views.logout_then_login', 
        name='logout'),

    url(r'^registro/$', 'Registro', name='registro'),
)
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class RegistroUsuario(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'username', 'password1', 'password2')
视图.py

from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login, logout
from django.core.context_processors import csrf

#importar el formulario de registro
from usuarios.forms import RegistroUsuario


def Registro(request):
    if request.user.is_anonymous():
        if request.method == 'POST':
        form = RegistroUsuario(request, POST)
        if form.is_valid():
                    form.save()
            return HttpResponse('Usuario creado sin problemas.')
            else:
        form = RegistroUsuario()
        context = {}
        context.update(csrf(request))
        context['form'] = form
        #pasar el context al template
        return render_to_response('registro.html', context)
    else:
        return HttpResponseRedirect('/')
forms.py:

from django.conf.urls import patterns, include, url
from django.contrib.auth.views import login, logout_then_login
from usuarios.views import Registro

urlpatterns = patterns('',
    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name':'registration/login.html'},
                name='login'),

        url(r'^cerrar/$', 'django.contrib.auth.views.logout_then_login', 
        name='logout'),

    url(r'^registro/$', 'Registro', name='registro'),
)
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class RegistroUsuario(UserCreationForm):
    class Meta:
        fields = ('first_name', 'last_name', 'email', 'username', 'password1', 'password2')
我与django的合作不多,事实上,错误并没有真正告诉我什么可能是错的

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/usuarios/registro/

Django Version: 1.6.2
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'usuarios')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
  114.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /usuarios/registro/
Exception Value: 'str' object is not callable

您在URL分派中错误地命名了视图:

from usuarios.views import Registro

urlpatterns = patterns('',
    # ...

    url(r'^registro/$', 'Registro', name='registro'),
这里,
'Registro'
不是Django可以导入的名称(它不是完整的模块路径),也没有指定要从中导入的前缀(
patterns()
的第一个参数是空字符串
'

您应该给出实际的视图对象(您已经在这里导入),或者给出完整模块路径的名称

因此,选择其中一个:

from usuarios.views import Registro

urlpatterns = patterns('',
    # ...

    url(r'^registro/$', Registro, name='registro'),

第一个选项将实际视图函数传递给寄存器(因为您已经导入了它,所以寄存器可以工作)


第二个选项除了提供视图名称外,还提供模块的完整路径;Django现在可以导入它(它在字符串中查找
,以确定是否可以导入某些内容)。

向我们显示您得到的错误,以便我们知道它来自何处。同样,对于Python,正确格式化代码也很重要。在此网页上呈现时,您的代码没有正确缩进;代码中可能有空格和制表符的组合(这会带来麻烦)。好的。谢谢对不起,这是我第一次来stackoverflow。没问题;我们几乎可以为您设置格式,但可能无法完全正确地设置格式…:)请参见浏览器错误页面中复制和粘贴视图文本的切换?你能点击那个并从那里复制回溯吗?它将比当前的错误消息更具可读性。