2012-01-16 7 views
1

iは、フォームがブラウザに表示さんQRコードを生成し、Djangoのフォームを持っているrender_to_responseに失敗Djangoのフォームは、それがqr_results.htmlレンダリングされません、しかし、提出した後

views.py

from django.template.loader import get_template 
from django.template import Template, Context 
from django.http import HttpResponse, Http404 
from django.shortcuts import render_to_response 
from django.core.mail import send_mail 
from django.http import HttpResponseRedirect 
from cacoos_com.qr.qr_form import QrForm 
from pygooglechart import QRChart 

def qr(request): 
    if request.method == 'POST': 
     qform = QrForm(request.POST) 
     if qform.is_valid(): 
      qc = qform.cleaned_data 
      chart = QRChart(125,125) 
      chart.add_data(qc['url']) 
      chart.set_ec('H', 0) 
      chart.download('/opt/cacoos_com/media/qr-hello.png') 
      render_to_response('qr_results.html', {'url': qc['url']}) 
    else: 
     qform = QrForm(initial={'url': 'type your url here'}) 
    return render_to_response('qr_form.html', {'form': qform}) 

qr_form.pyは

from django import forms 

class QrForm(forms.Form): 
    url = forms.CharField(max_length=100) 

私はここでテンプレートを掲載していないが、私は、彼らは大丈夫だと思いますか?これが起こってすることができ、なぜ任意のアイデア....

:更新

これらが使用される二つのテンプレートです。..

qr_form.py

{% extends "base.html" %} 
<html> 
<head> 
    <title>QR generator</title> 
</head> 
<body> 
{% block content %} 
    <h3>QR encoder</h3> 

    {% if form.errors %} 
     <p style="color: red;"> 
      Please Correct the error{{ form.errors|pluralize }} below. 
     </p> 
    {% endif %} 

    <form action="" method="POST"> 
     <div class="field"> 
      {{ form.url.errors }} 
      <label for="id_url">Url:</label> 
      {{ form.url }} 
     </div> 
     <input type="submit" value="Submit"> 
    </form> 

{% endblock %} 
</body> 
</html> 

qr_results.html

{% extends "base.html" %} 

{% block content %} 
<h3>QR code</h3> 

<p> This is the qr code for your url {{ url }} </p> 

<p><img src="{{ MEDIA_URL}}/media/qr-hello.png" /"></p> 

{% endblock %} 
+0

動作します!!!それを返すのを忘れていました。テンプレートコードも入れていただけますか? –

+0

は – krisdigitx

+0

Btwを上回るテンプレートを投稿しました。あなたのテンプレートにはcsrfトークンがありませんので、あなたのアプリはcsrf攻撃に屈すると思います。どのバージョンのdjangoを使用していますか? –

答えて

2

あなたのビューが再表示されないためですまた、(http://en.wikipedia.org/wiki/Post/Redirect/Getを参照)POST後にリダイレクトを行うには良い方法です

render_to_response('qr_results.html', {'url': qc['url']}) 

の結果を回します。

return render_to_response('qr_results.html', {'url': qc['url']}) 

に置き換え

+0

....理解できませんでした。コンテキスト内の値をqr_results.htmlテンプレートに渡す必要があります。それは – krisdigitx

+0

render_to_response関数はHttpResponseを返します。しかし、このHttpResponseは、あなたのビュー関数がそれを返すことも、変数に格納することもないので、取り除かれます。 –

+0

変数qc ['url']の値はQRイメージを生成できますが、render_to_response行で失敗します... – krisdigitx

0
render_to_response('qr_results.html', {'url': qc['url']}) 

には、エラーが発生されていない場合、それが原因で、テンプレートの問題である可能性があり、今

関連する問題