__init __()获得了意外的关键字参数'pk'

f71316

试图在教程中进行一些很小的修改,以将表单和模板应用于我的对象的模型,但是遇到错误,我无法解决。这应该很简单,模型创建表单,然后保存表单并将其重定向到详细信息页面。

据我所知,对HttpResponseRedirect的调用是导致错误的原因,但我不知道为什么或出现了什么问题。该代码似乎(尽可能接近)与本教程中所见以及django表单文档页面和其他教程中所见的匹配。也许这是愚蠢的,但我只是没看到,但是我已经尝试了几个小时,并且我需要另一组眼睛。请帮忙。我在这里搞砸了什么?提前致谢。

我得到的错误是:

__init__() got an unexpected keyword argument 'pk'

这是我的urls.py:

app_name = 'jobs'
urlpatterns = [
    # /jobs/
    url(r'^$', views.IndexView.as_view(), name='list'),
    url(r'^(?P<pk>[0-9]+)/$', views.detail, name='detail'),
    url(r'^edit/(?P<pk>[0-9]+)/$', views.edit, name='edit'),
    url(r'^edit/$', views.new, name='new'),
]

相关views.py视图:

def new(request):
    if request.method == "POST":
        form = JobForm(request.POST)
        if form.is_valid():
            job = form.save(commit=False)
            user = request.user
            member = Member.objects.get(user=user)
            buyer = Buyer.objects.get(member=member)
            job.buyer = buyer
            job.buyer_paid = False
            job.freelancers_paid = False
            #job.created = timezone.now()
            job.save()
            return HttpResponseRedirect('detail', pk=job.pk)
    else:
        form = JobForm()
    return render(request, 'jobs/edit.html', {'form': form})

Forms.py文件:

class JobForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(JobForm, self).__init__(*args, **kwargs)

    class Meta:
        model = Job
        fields = (
            'handle',
            'name',
            'venue',
            'room',
            'start_on',
            'end_on',
            'contact',
            'description',
            'instructions',
            'dress_code',
        )

追溯:

Environment:

Request Method: POST
Request URL: http://192.168.0.106:8000/jobs/edit/

Django Version: 1.8.7
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.messages',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.staticfiles',
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'rest_framework',
 'reversion',
 'commons',
 'members',
 'buyers',
 'freelancers',
 'payments',
 'geographic',
 'locations',
 'jobs',
 'technicians',
 'shifts')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')


Traceback:
File "/home/matt/.virtualenvs/hmd/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  132.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/matt/Projects/hmd/hiremedirect/jobs/views.py" in new
  35.             return HttpResponseRedirect('detail', pk=job.pk)
File "/home/matt/.virtualenvs/hmd/local/lib/python2.7/site-packages/django/http/response.py" in __init__
  457.         super(HttpResponseRedirectBase, self).__init__(*args, **kwargs)
File "/home/matt/.virtualenvs/hmd/local/lib/python2.7/site-packages/django/http/response.py" in __init__
  340.         super(HttpResponse, self).__init__(*args, **kwargs)

Exception Type: TypeError at /jobs/edit/
Exception Value: __init__() got an unexpected keyword argument 'pk'

编辑添加:发生此错误时,数据将保存在数据库中。

仍然

您正在pkHttpResponseRedirect此处传递

HttpResponseRedirect('detail', pk=job.pk)

HttpResponseRedirect应该将用户重定向到另一个URL。要根据您的urlconf构造url,可以使用此处介绍的多种方法:https ://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-resolution-of-urls

我会选择这样使用reverse

HttpResponseRedirect(reverse('detail', kwargs={"pk": job.pk}))

最终的代码如下所示:

from django.core.urlresolvers import reverse

# [ other codes ]

def new(request):
    if request.method == "POST":
        form = JobForm(request.POST)
        if form.is_valid():
            job = form.save(commit=False)
            user = request.user
            member = Member.objects.get(user=user)
            buyer = Buyer.objects.get(member=member)
            job.buyer = buyer
            job.buyer_paid = False
            job.freelancers_paid = False
            #job.created = timezone.now()
            job.save()
            return HttpResponseRedirect(reverse('detail', kwargs={"pk": job.pk}))

注意:redirect函数用于reverse解析URL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

__init __()在python子进程中获得了意外的关键字参数'timeout'

来自分类Dev

__init __()获得了意外的关键字参数'required'

来自分类Dev

cats()获得了意外的关键字参数“ pk”

来自分类Dev

all()在Django中获得了意外的关键字参数'pk'

来自分类Dev

Django:__init __()获得了意外的关键字参数'instance'

来自分类Dev

__init __()获得了意外的关键字参数'mimetype'

来自分类Dev

__init __()获得了意外的关键字参数

来自分类Dev

__init __()获得了意外的关键字参数“健康”

来自分类Dev

__init __()获得了意外的关键字参数“ y”

来自分类Dev

TypeError:__init __()获得了意外的关键字参数'shuffle'

来自分类Dev

Django rest framework / simplejson错误__init __()获得了意外的关键字参数

来自分类Dev

表单错误-__init __()获得了意外的关键字参数'prefix'

来自分类Dev

__init __()获得了意外的关键字参数'_job'

来自分类Dev

Haystack Faceted:__init __()获得了意外的关键字参数'facet_fields'

来自分类Dev

Python 3.5:TypeError:__init __()获得了意外的关键字参数'nosigint'

来自分类Dev

获取以下TypeError:__init __()获得了意外的关键字参数'iam_apikey'

来自分类Dev

TypeError:__init __()获得了意外的关键字参数“ choices”

来自分类Dev

TypeError:__init __()获得了意外的关键字参数'show_preview'

来自分类Dev

TypeError:__init __()获得了意外的关键字参数'validators'

来自分类Dev

需要帮忙 !!!!TypeError:__init __()获得了意外的关键字参数'num_workers'

来自分类Dev

TypeError:__init __()使用SMOTE时获得了意外的关键字参数'ratio'

来自分类Dev

__init __()在Django中获得了意外的关键字参数'user_id'

来自分类Dev

Django表单密码TypeError:__init __()获得了意外的关键字参数'widget'

来自分类Dev

TypeError:__init __()获得了意外的关键字参数'requote'

来自分类Dev

TypeError:__init __()获得了意外的关键字参数'task_id'

来自分类Dev

__init __()在Python 2中使用argparse获得了意外的关键字参数'required'

来自分类Dev

__init __()获得了意外的关键字参数'required'

来自分类Dev

__init __()获得了意外的关键字参数

来自分类Dev

__init __()获得了意外的关键字参数“ y”

Related 相关文章

  1. 1

    __init __()在python子进程中获得了意外的关键字参数'timeout'

  2. 2

    __init __()获得了意外的关键字参数'required'

  3. 3

    cats()获得了意外的关键字参数“ pk”

  4. 4

    all()在Django中获得了意外的关键字参数'pk'

  5. 5

    Django:__init __()获得了意外的关键字参数'instance'

  6. 6

    __init __()获得了意外的关键字参数'mimetype'

  7. 7

    __init __()获得了意外的关键字参数

  8. 8

    __init __()获得了意外的关键字参数“健康”

  9. 9

    __init __()获得了意外的关键字参数“ y”

  10. 10

    TypeError:__init __()获得了意外的关键字参数'shuffle'

  11. 11

    Django rest framework / simplejson错误__init __()获得了意外的关键字参数

  12. 12

    表单错误-__init __()获得了意外的关键字参数'prefix'

  13. 13

    __init __()获得了意外的关键字参数'_job'

  14. 14

    Haystack Faceted:__init __()获得了意外的关键字参数'facet_fields'

  15. 15

    Python 3.5:TypeError:__init __()获得了意外的关键字参数'nosigint'

  16. 16

    获取以下TypeError:__init __()获得了意外的关键字参数'iam_apikey'

  17. 17

    TypeError:__init __()获得了意外的关键字参数“ choices”

  18. 18

    TypeError:__init __()获得了意外的关键字参数'show_preview'

  19. 19

    TypeError:__init __()获得了意外的关键字参数'validators'

  20. 20

    需要帮忙 !!!!TypeError:__init __()获得了意外的关键字参数'num_workers'

  21. 21

    TypeError:__init __()使用SMOTE时获得了意外的关键字参数'ratio'

  22. 22

    __init __()在Django中获得了意外的关键字参数'user_id'

  23. 23

    Django表单密码TypeError:__init __()获得了意外的关键字参数'widget'

  24. 24

    TypeError:__init __()获得了意外的关键字参数'requote'

  25. 25

    TypeError:__init __()获得了意外的关键字参数'task_id'

  26. 26

    __init __()在Python 2中使用argparse获得了意外的关键字参数'required'

  27. 27

    __init __()获得了意外的关键字参数'required'

  28. 28

    __init __()获得了意外的关键字参数

  29. 29

    __init __()获得了意外的关键字参数“ y”

热门标签

归档