如何解决Remembered收到了意外的关键字参数“ pk”
我试图通过单击按钮来增加值。但是我得到了错误
remembered() got an unexpected keyword argument 'pk'
我不了解,因为据我所知,函数Remembered()需要同时发送两个PK。
网址
path('mypage/<int:pk>/',DeckDetailView.as_view(),name='mypage-study-deck'),path('mypage/<int:pk>/<int:card_id>',views.remembered,name='remembered')
观看次数
class DeckDetailView(LoginRequiredMixin,DetailView):
model = Deck
def get_context_data(self,*args,**kwargs):
deck = self.get_object()
deck_title = deck.title
context = super(DeckDetailView,self).get_context_data(*args,**kwargs)
context['cards'] = Card.objects.filter(
decks__title=deck_title).filter(days_till_study=1)
return context
def remembered(request,card_id,deck_id):
if request.method == 'POST':
deck = get_object_or_404(Deck,pk=deck_id)
card = get_object_or_404(Card,pk=card_id)
card.days_till_study = card.days_till_study * 2
card.save()
return redirect('/mypage/' + str(deck.id))
模板
{% for card in cards reversed %}
<div class="my-column
col-xl-4 mt-2 ">
<div class="card">
<div class="card-body">
<h5 class="card-title"> {{card.question}} </h5>
<p class="card-text"> </p>
<a href="{% url 'mypage-study-deck' deck.id %}">
<!-- Here we add the collapse functionality for the button -->
<p>
<a class="btn btn-success" data-toggle="collapse" href="#{{card.id}}" role="button" aria-expanded="false" aria-controls="{{card.id}}">
See Answer
</a>
</p>
<div class="collapse" id="{{card.id}}">
<div class="card card-body">
<p> {{card.answer}} </p>
<a href="javascript:{document.getElementById('remembered').submit()}">
<div class="btn btn-success"> Remembered </div>
<!-- Days to study should be incremented - I need to get some post up in here?-->
</div>
</div>
</div>
</div>
</div>
<form id="remembered" method="POST" action="{% url 'remembered' deck.id card.id %}">
{% csrf_token %}
<input type ="hidden">
</form>
{% endfor %}
感谢阅读。
解决方法
您在此处通过网址传递pk
和card_id
。但是鉴于您没有考虑传递数据的顺序。因此,让我们尝试一下。
def remembered(request,pk,card_id):
if request.method == 'POST':
deck = get_object_or_404(Deck,pk=pk)
card = get_object_or_404(Card,pk=card_id)
card.days_till_study = card.days_till_study * 2
card.save()
return redirect('/mypage/' + str(deck.id))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。