2

この質問にタイトルを付ける方法がよくわかりませんが、Django を使用して単純な Web アプリケーションを開発しようとしています。私がやろうとしているのは、ユーザーが各画像に手動でタグを付け、各タグに特定の画像への外部キーがあることです (ただし、各画像には複数のタグを付けることができます)。インデックスページには実際の画像が表示されるはずですが、まだわかりません...

ほとんどの問題は、それを実装する方法がわからないため、各ページのインデックスページに画像とイメージタグのボックスが表示されることです。ユーザーが送信した後、タグのない次の画像/タグの数が最も少ない画像に移動します。現在、ユーザーはタグを送信できます (データは正しく書き込まれます) が、同じイメージにとどまります。私はPython / Django初心者なので、許してください:P

関連するソースコードは次のとおりです。

フォーム.py:

class InputForm(forms.ModelForm):
image = forms.ModelChoiceField(queryset=Image.objects.all(),
    widget=forms.HiddenInput())

class Meta:
    model = Tag 

models.py:

class Image(models.Model):
image_location = models.CharField(max_length=200)
num_tags = models.IntegerField(default=0)   
image_score = models.FloatField()   
def __unicode__(self):
    return u'%d' % self.id 

class Tag(models.Model):
image = models.ForeignKey(Image)
tag_text = models.CharField(max_length=200, blank=True)

def __unicode__(self):
    return self.tag_text

ビュー.py:

def index(request):
    if request.method == 'POST':
            return HttpResponse(request.POST['image'])

    image = Image.objects.all()[0]
    form = InputForm(initial={'image': image})
    return render_to_response('imageSite/index.html',
    {
            'form':form,
    },
    context_instance=RequestContext(request))

def submit(request):
    form = InputForm(request.POST)
    if(form.is_valid()):
            image = form.cleaned_data['image'];
            image.num_tags = image.num_tags + 1
            image.save()
            model = form.save()
            model.save()
            return redirect(index)

index.html:

<ul>
<form action="/imageSite/submit/" method="post">
{%csrf_token %}
<table>
    {{ form.as_table }}
</table>    
<input type="submit" value="Submit" /> 
</form> 
</ul>
4

1 に答える 1

1

コードreturn redirect(index)は機能しません。リダイレクト先の適切な URL を含むリダイレクト応答を返す必要があります。例えば:

redirect_url = '/images/45/'
return HttpResponseRedirect(redirect_url)

完全な例については、Django ドキュメントのこの例を参照してください。ビューで の値をredirect_url計算する必要があることに注意してください。Imageタグの数が最も少ないオブジェクトを計算し、Django を使用reverseしてそのオブジェクトの URL をきれいに計算する必要がありImageます。フォームが無効な場合は、リダイレクトを実行しないでください。

于 2012-07-09T09:09:09.433 に答える