我有一个模板,它显示了一个属于url的扬声器名称列表,我想点击这些urls并转到扬声器页面,我得到了一个唯一的id,它看起来是"832fc2ca-787f-484b-b815-f82959607311",问题是我得到了错误。
get_speaker_by_id()得到了一个意外的关键字参数'id_speaker‘
我认为问题在于urls.py或speakers.html href上的乙醚。我看了每一个相关的问题,但我无法提出解决方案。
urls.py
url(r'^speakers', views.speakers_list, name='speakers'),
url(r'^speaker/(?P<id_speaker>[0-9a-z\-]+)/$',
views.get_speaker_by_id, name='get_speaker_by_id_url')这是显示说话者名称列表的模板。
speakers.html
{% for speaker in all_speakers_list%}
<div class="container">
<div class="row">
<div class="col-sm-6">
<a href="{% url 'get_speaker_by_id_url' speaker.speaker_id %}">{{ speaker.greek_name }}</a>
</div>
</div>
</div>
{% endfor %}views.py
get_speaker_by_id(request, id_speaker):
''' Get speaker info by id '''
requested_speaker = Speaker.objects.get(speaker_id=id_speaker)
template = loader.get_template('greekparliament/speaker.html')
context = {
'requested_speaker': requested_speaker
}
return HttpResponse(template.render(context, request))models.py
class Speaker(models.Model):
speaker_id = models.CharField(max_length=200, default='')
english_name = models.CharField(max_length=200, default='', blank=True)
image = models.CharField(max_length=200, default='', blank=True)
email = models.EmailField(max_length=254, default='', blank=True)
wiki_el = models.URLField(max_length=200, default='', blank=True)
twitter = models.URLField(max_length=200, default='', blank=True)
greek_name = models.CharField(max_length=200, default='')
wiki_en = models.URLField(max_length=200, default='', blank=True)
website = models.URLField(max_length=200, default='', blank=True)发布于 2017-09-21 11:13:59
当我们看到以下错误时
get_speaker_by_id() got an unexpected keyword argument 'id_speaker'我们可以清楚地看到,它正在寻找一个名为id_speaker的参数。
从您发布的views.py文件代码中,我可以清楚地看到参数id_speaker已被传递。因此,只有一件事可以生成该错误,那就是,在您的get_speaker_by_id()文件中定义了函数、、、多次。
通过下面的代码更改函数get_speaker_by_id()的代码,该代码具有最佳实现。
from django.shortcuts import render
...
def get_speaker_by_id(request, id_speaker):
"""
Get speaker info by id <You should always write doc>
For example, you can follow numpy guidelines on how to
write docs - https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt
Parameters
----------
request
Django request that will come from http
id_speaker: str
Id of the speaker
"""
# I think you should handle `DoesNotExist` error here or it will crash
# with an Internal Server Error when id_speaker does not exists in db
requested_speaker = Speaker.objects.get(speaker_id=id_speaker)
context = {
'requested_speaker': requested_speaker
}
return render(request, "greekparliament/speaker.html", context)https://stackoverflow.com/questions/46341324
复制相似问题