django 发布信息后 TypeError at /jyinfo/1 init() takes exactly 1 argument (3 given)? 400 报错
Environment:
Request Method: GET Request URL: http://127.0.0.1:8000/jyinfo/1
Django Version: 1.5.5 Python Version: 2.7.6 Installed Applications: ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.admin', 'django.contrib.admindocs', 'tongzhi') Installed Middleware: ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware')
Traceback: File "E:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response 115. response = callback(request, *callback_args, **callback_kwargs)
Exception Type: TypeError at /jyinfo/1 Exception Value: init() takes exactly 1 argument (3 given)
 
 
django 发布信息后 TypeError at /jyinfo/1 __init__() takes exactly 1 argument (3 given)
附:models.py
#交友
class JiaoYou(models.Model):
    jycategory = models.ForeignKey(JyCategory, verbose_name=u'交友分类')
    title = models.CharField(max_length='60')
    content = models.TextField()
    user= models.ForeignKey(User)
    ip = models.IPAddressField()
    datetimeinfo = models.DateTimeField(auto_now_add=True)
    clickcount = models.IntegerField(default=0)
    addr_dz = models.CharField(max_length=50, blank=True)
    phone_dh = models.CharField(blank=True, max_length='50')
    qq = models.IntegerField(blank=True, null=True)
    lxr_user = models.CharField(blank=True, max_length='10')
    is_top  = models.IntegerField(default=0)
    infopic1 = models.FileField(upload_to='./pic/%Y/%m/%d/%H/', blank=True, null=True)
    infopic2 = models.FileField(upload_to='./pic/%Y/%m/%d/%H/', blank=True, null=True)
    infopic3 = models.FileField(upload_to='./pic/%Y/%m/%d/%H/', blank=True, null=True)
    def __unicode__(self):
        return u'用户%s发表的标题为%s的交友信息' % (self.user.username, self.title)
    class Meta:
        verbose_name_plural = u'交友信息' 
#交友信息发布函数
@login_required
def jiaoyou_post(request):
    if request.method == 'POST':
        form = JiaoYouPostForm(request.POST, request.FILES)
        if form.is_valid():
            newinfo = JiaoYou(
                title = form.cleaned_data['title'],
                content = form.cleaned_data['content'],
                infopic1 = form.cleaned_data['infopic1'],
                infopic2 = form.cleaned_data['infopic2'],
                infopic3 = form.cleaned_data['infopic3'],
                user = request.user,
                jycategory = form.cleaned_data['jycategory'],
                addr_dz = form.cleaned_data['addr_dz'],
                ip = request.META['REMOTE_ADDR'],
                phone_dh = form.cleaned_data['phone_dh'],                
                qq = form.cleaned_data['qq'],
                lxr_user = form.cleaned_data['lxr_user'],
                )
            newinfo.save()
            return HttpResponseRedirect(reverse('jyinfo', args=[newinfo.id]))
        else:
            return HttpResponse("你填写的信息有误,请返回修改后重新发布!")
    else:
        form = JiaoYouPostForm()
        variables = RequestContext(request, {'form':form})
        return render_to_response('jy/jiaoyou_post.html', variables) 
这样发布的信息。可以发布到数据库里面。
但是用DatilView调用展示的时候就出现上面的错误
看出错提示好像是 多传了个参数? 但是实在找不出是哪里出了问题了。
这是views
#交友信息页面
class jyinfo(DetailView):
    model = JiaoYou  
    template_name = 'jy/jyinfo.html'
    def get_object(self):
        object1 = super(jyinfo, self).get_object()
        object1.clickcount += 1
        object1.save()
        return object1 
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
把urls.py, response返回的代码贴出来看看######
# -*- coding:utf-8 -*-
from django.conf.urls import patterns, include, url
from django.views.generic import DetailView, ListView, TemplateView
from tongzhi.models import *
from tongzhi.views import *
import os
import settings
from django.contrib import admin
admin.autodiscover()
sitemedia1 = os.path.join(os.path.dirname(__file__), '../site_media').replace('\\', '/')
urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'tjxxw.views.home', name='home'),
    # url(r'^tjxxw/', include('tjxxw.foo.urls')),
    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
    # Uncomment the next line to enable the admin:
    url(r'^tz/reg/$', 'tongzhi.views.register_tz'),
    url(r'^accounts/register/ok/$', 'tongzhi.views.reg_ok'),
    url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
    url(r'^accounts/logout/$', 'django.contrib.auth.views.logout', {'next_page': '/'}),
    url(r'^accounts/password/reset/$', 'django.contrib.auth.views.password_reset'),
    url(r'^accounts/password/reset/done/$', 'django.contrib.auth.views.password_reset_done'),
    url(r'^password/reset/complete/$', 'django.contrib.auth.views.password_reset_complete', name='auth_password_reset_complete'),
    url(r'^accounts/change-password/$', 'django.contrib.auth.views.password_change', {'template_name':'registration/password_change.html'}),
    url(r'^accounts/change-done/$', 'django.contrib.auth.views.password_change_done', {'template_name':'registration/password_change_success.html'}),
    url(r'^jypost/$', 'tongzhi.views.jiaoyou_post', name='jiaoyou_post'),
    url(r'^tzpost/$', 'tongzhi.views.tzinfo_post', name='tzinfo_post'),
    url(r'^staticfiles/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATICFILES_DIRS, 'show_indexes':True}),
    url(r'^$', 'tongzhi.views.indexlist', name='indexlist'),
    url(r'^jylist/(?P<pk>\d+)$', 'tongzhi.views.jylist', name='jylist'),
                       
    url(r'^jyinfo/(?P<pk>\d+)/$', 'tongzhi.views.jyinfo', name='jyinfo'),
    url(r'^tzlist/(?P<pk>\d+)$', 'tongzhi.views.tzlist', name='tzlist'),
    url(r'^tzinfo/(?P<pk>\d+).html$', 'tongzhi.views.tzinfo', name='tzinfo'),
    url(r'^admin/', include(admin.site.urls)),
)
if settings.DEBUG:
    urlpatterns += patterns('',
                            url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.MEDIA_ROOT}),
                            url(r'^img/(?P<path>.*)$', 'django.views.static.serve', {'document_root':settings.STATIC_ROOT}),
			    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': sitemedia1}),
                            ) 
 
 
urls.py 的这行修改一下试试
url(r'^jyinfo/(?P<pk>\d+)/$', 'tongzhi.views.jyinfo', name='jyinfo'),
修改为
url(r'^jyinfo/(?P<pk>\d+)/$', jyinfo.as_view(), name='jyinfo'),
######多谢...
我就说.哪里有点小问题...
原来是as_views..这里忘了views里用的是通用视图了.