gpt4 book ai didi

python - Django: '/job/job_view/' 的 URL 反向,参数为 '()',且未找到关键字参数。尝试了 0 个模式:[]

转载 作者:行者123 更新时间:2023-11-30 23:30:48 25 4
gpt4 key购买 nike

我刚刚开始尝试使用 django reverse 进行 URL 查找,并遇到了这个问题。我看到的一切看起来都应该有效。我将 view def 传递给它以呈现页面,以及 slugid 以便它呈现正确的页面。不确定我做错了什么。如果有人对可能导致此错误的原因有任何指示,我将不胜感激。

错误是这样的:

Reverse for '/job/job_view/' with arguments '()' and keyword arguments '{'slug': u'testing-form-proficiencies', 'jobid': u'59'}' not found. 0 pattern(s) tried: []

代码如下:

views.py

# Watch a Job
def job_watch(request, jobid):

job = Jobs.objects.get(id=jobid)

if request.method == 'POST':
JobsWatch.objects.create(job_id=jobid, user_id=request.user.id, watching=1)
render_to_response(reverse('/job/job_view/', args=(), kwargs={'jobid': jobid, 'slug': job.slug}))

# View a single Job
def job_view(request, jobid, slug):

companyId = Jobs.objects.get(id=jobid).user_id

# Get associated Job Proficiencies IDs attached to a Job
profid = JobProficiencies_Proficiencies.objects.filter(job_id=jobid).select_related('job_proficiencies_id')
# Get the Proficiency values attached to the job
proficiencies = JobProficiencies.objects.filter(id__in=profid).select_related('job_proficiency', 'proficiency_required', 'comfort_level')

args = {}
args.update(csrf(request))
args['job'] = get_object_or_404(Jobs, id=jobid, slug=slug)
args['company'] = get_object_or_404(User, id=companyId)
args['proficiencies'] = proficiencies

return render_to_response('job/view.html', args, context_instance=RequestContext(request))

urls.py

from django.conf.urls import patterns, url
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = patterns('',
url(r'^(?P<slug>[\w\-]+)/j(?P<jobid>\d+)$', 'job.views.job_view', name="view_job"),
url(r'^all/$', 'job.views.all_jobs', name="view_jobs"),
url(r'^create/$', 'job.views.create', name="create_job"),
url(r'^edit/j(?P<jobid>\d+)/$', 'job.views.edit', name="edit_job"),
url(r'^watch/j(?P<jobid>\d+)/$', 'job.views.job_watch', name='job_watch'),
)

感谢任何人花时间查看此问题。干杯。

最佳答案

job_watch View 至少存在三个问题:

  1. reverse() 函数的第一个参数必须是正确的urlpattern 名称或 View 导入路径。更改 /job/job_view/ 中urlpattern 的实际名称:

    reverse('view_job', kwargs={'jobid': jobid, 'slug': job.slug})
  2. 你想通过传递返回的URL来实现什么目的reverse()render_to_response()?不管这个方法是什么行不通的。如果您想将用户重定向到网址,请使用 HttpResponseRedirect :

    return HttpResponseRedirect(reverse('view_job', kwargs={'jobid': jobid, 'slug': job.slug}))

    您可以使用Django's redirect shortcut制作这段代码较短:

    return redirect('view_job', jobid=jobid, slug=job.slug)
  3. 现在您的 View 不会返回任何内容。绝不。我已经在上面的代码中更正了部分内容,但仅当方法为 POST 时才会调用该代码。如果方法不是 POST,您仍然需要返回一些内容,或者使用 require_POST()装饰器来指示请求必须 POST。

最终代码:

from django.views.decorators.http import require_POST
from django.shortcuts import redirect

@require_POST
def job_watch(request, jobid):
job = Jobs.objects.get(id=jobid)
JobsWatch.objects.create(job_id=jobid, user_id=request.user.id, watching=1)
return redirect('view_job', jobid=jobid, slug=job.slug)

关于python - Django: '/job/job_view/' 的 URL 反向,参数为 '()',且未找到关键字参数。尝试了 0 个模式:[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20317950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com