2016-04-14 8 views
0

Djangoフォームとテンプレートを使用してhtmlに変数を送信しようとしています。Django - クラスとビューの問題を診断する

これは、このコードが間違っている

class AdminView(TemplateView): 
template_name = 'admin.html' 

def admin(self, request): 
    template = 'admin.html' 
    data = Quiz.objects.all() 
    form = AdminForm(request.POST) 
    context = {"form": form} 
    context['admin'] = data 
    # return render(request, template, context) 
    return render_to_response(context) 

何...私のコードですか?どのように変数がウェブサイトに表示されないのでしょうか。

私のIDEでline context = {"form"、form}がハイライトされ、エラーが発生しました。

エラー:この辞書の作成は、辞書のリテラルとして書き直すことができます。

これはどのように見えるのですか?

class AdminView(TemplateView): 
    template_name = 'admin.html' 

def post(self, request): 
    template = 'admin.html' 
    data = Quiz.objects.all() 
    form = AdminForm(request.POST) 
    context = {"form": form} 
    context['admin'] = data 
    return render(request, template, context) 

残念ながらまだ動作しませんか?

これは...単にスタイルの問題であり、実際の問題とは何の関係もありません

{% if request.user.is_authenticated%} 
    {% if request.user.username == "teacher" %} 
     <!DOCTYPE html> 
     <html lang="en"> 
     <head> 
      {% load staticfiles %} 
      <meta charset="UTF-8"> 
      <title>Admin</title> 
      <link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" /> 
     </head> 
     <body> 
     {% include 'navbar.html' %} 

     Admin Test 

     {{ admin }} 



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

答えて

0

htmlコードです。

コードにはいくつかの問題があります。 1つは、adminのような任意のメソッドを定義して呼び出すことができないということです。 getまたはpostをここで定義する必要があります。

第2に、render_to_responseにテンプレート名を付ける必要があるということです。 renderを使用してコメントアウトしたバージョンが正しいです。

class AdminView(TemplateView): 
    template_name = 'admin.html' 

    ''' 
    This is for a GET request 
    ''' 
    def get_context_data(self, **kwargs): 
     context = super(AdminView, self).get_context_data(**kwargs) 
     context['admin'] = Quiz.objects.all() 
     context['form'] = AdminForm() 
     return context 

    ''' 
    This is for a POST request 
    ''' 
    def post(self, request, *args, **kwargs): 
     form = AdminForm(request.POST) 
     if form.is_valid(): 
      # do something if form data is valid 
     else: 
      # do something if form data is not valid 
     return render(request, 'admin.html', context) 

しかし、あなたはフォームをproccessしたい場合、私はあなたが代わりに FormViewを使用することをお勧め:あなたはこのように、あなたが get_context_data()メソッドを使用することができますテンプレートに追加のコンテキストを送信したい場合は

+0

私は質問に少し追加しました。それはどうやって見える?それはまだ動作していないようです。 –

0

は、インデントには注意してくださいTemplateView

+0

あなたは私の目標を逃してしまったと思います。データベースからウェブサイトにデータを表示しようとしています。 –

関連する問題