首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django得到了一个意想不到的关键字参数'id_speaker‘

Django得到了一个意想不到的关键字参数'id_speaker‘
EN

Stack Overflow用户
提问于 2017-09-21 10:17:56
回答 1查看 2.2K关注 0票数 1

我有一个模板,它显示了一个属于url的扬声器名称列表,我想点击这些urls并转到扬声器页面,我得到了一个唯一的id,它看起来是"832fc2ca-787f-484b-b815-f82959607311",问题是我得到了错误。

get_speaker_by_id()得到了一个意外的关键字参数'id_speaker‘

我认为问题在于urls.py或speakers.html href上的乙醚。我看了每一个相关的问题,但我无法提出解决方案。

urls.py

代码语言:javascript
复制
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

代码语言:javascript
复制
{% 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

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-21 11:13:59

当我们看到以下错误时

代码语言:javascript
复制
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()的代码,该代码具有最佳实现。

代码语言:javascript
复制
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)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46341324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档