1

ページの入力ボックスの表示に問題があります。この同じページに 2 つのビューが必要です。1 つはデータにアクセスして取得するビューで、もう 1 つはフォームです。これはイベントのサインアップ ページであるため、最初のビューは特定のイベントの詳細を表示し、2 番目のビューは特定のユーザーをイベント自体から削除するためのビューです。

私のviews.py

def ShowSpecificEvent(request, eventslug):
if request.method == 'POST':
    form = RemovalForm(request.POST)
    if form.is_valid():
        event   = Event.objects.get(slug=eventslug)
        context = {'event': event,}
        updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
        updated_event.save()
    return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
event   = Event.objects.get(slug=eventslug)
context = {'event': event,}
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))

def Remove(request, eventslug):
    if request.method == 'POST':
        form = RemovalForm(request.POST)
        if form.is_valid():
            event   = Event.objects.get(slug=eventslug)
            context = {'event': event,}
            updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
            updated_event.save()
        return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
    return HttpResponseRedirect('base_remove_user.html')

私のテンプレート

{% block content %}

event details...

{% if user.is_authenticated %}
{% if event.sign_up_is_live %}
    <p><a href= "{% url eventattend event.slug %}"> Sign me up!</a></p>

<form action='' method='post'>
{% csrf_token %}
{% if form.errors %}<p>Please correct the following fields:</p>{% endif %}
<div class='register_div'>
{% if form.for_removal.errors %} <p class='error'>{{ form.for_removal.errors }}</p>{% endif %}
<p><label for='for_removal'{% if form.for_removal.errors %}class='error'{% endif %}>User to be removed:</label></p>
<p>{{ form.for_removal }}</p>
</div>  

<p><input type='submit'></p>

</form>

{% endif %}{% endif %}

{% endblock %}

私はこれを読んだことがありますが、これは最も関連性が高いと思いますが、規定された方法は実際には役に立ちません.

2 つのページを分割することも考えましたが、ユーザーの削除ページでイベントラグを取得できません。

前もって感謝します :)

アップデート:

Guttrt の回答は非常に役立ちました。ShowSpecificEvent を次のように変更することで、入力ボックスを表示することができました。

def ShowSpecificEvent(request, eventslug):
event   = Event.objects.get(slug=eventslug)
form    = RemovalForm(request.POST or None)
context = {'event': event, 'form': form,}
if request.method == 'POST':
    if form.is_valid():
        updated_event = event.signed_up.remove(request.POST.get('for_removal'))
        updated_event.save()
        return HttpResponseRedirect('base_user_removed.html')
    else:   
        return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))

ただし、フォームを送信した後、ValueError (基数 10 の int() の無効なリテラル: 'a_technicolor_skye') が返されます。ここで、a_technicolor_skye は削除しようとしているユーザーです。誰にもアイデアはありますか?ところで、event.signed_up は多対多のフィールドで、null=True と blank=True に設定しました。

4

1 に答える 1

0

すべての情報をコンテキスト変数に渡すことができます。

context = {'event': event, 'form': my_form}

その後、テンプレートで両方を使用できます。これは、最終的に 1 つのビューを使用することになりますが、そのビューまたはそのメソッドでページのすべての情報を計算することになることに注意してください。

于 2012-09-11T15:28:24.713 に答える