0

私はかなり単純な電子メールフォームを機能させようとしています。フォームは 1 つのフィールド (メール) のみです。

フォーム.py

from django import forms

class EmailForm(forms.Form):
    email = forms.EmailField()

ビュー.py

from django.shortcuts import render_to_response
from django.core.mail import EmailMultiAlternatives
from django.template import RequestContext
from launchpage.models import EmailForm

def index(request):
    if request.method == 'POST':        
        form = EmailForm(request.POST)
        if form.is_valid():
            clean_data = form.clean_data
            # send an email
                    thank_you = "Thanks for signing up"
            return render_to_response('launch.html', {'thank_you': thank_you})
    else:
        form = EmailForm()
    return render_to_response('launch.html', {'form': form,}, context_instance=RequestContext(request))

launch.html (関連部分)

<div class="row-fluid">
    <div class="span12">
        {% if thank_you %}
             <div class="alert alter-info">
             {{ thank_you }}
             </div>
        {% else %}
            <form action="" method="post" class="form-horizontal">{% csrf_token %}
            Or stay updated by email (no spam, pinky swear) &nbsp;&nbsp;
            {{ form.email }}
            <button type="submit" class="btn">Submit</button>
        </form>
        {% endif %}
    </div>
</div>

settings.py のミドルウェア

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)

現在の結果: テンプレートが含まれていないかのようにページが表示されます。フォームと送信ボタンは表示されますが、メール フィールドはありません。csrf隠しフィールドもありません。私は愚かな何かを見逃しているに違いない...

4

1 に答える 1

1

これを仮定すると:

from launchpage.models import EmailForm

あるべきではないfrom launchpage.forms import EmailForm

{'form': form,}あなたが持っている他の問題は{'form': form}

最後に、{{ form.email }}単純にする必要があります{{ form }}

最後のヒント-適切なリクエストコンテキストを自動的に送信するrenderショートカットの使用を検討してください。

于 2012-04-18T04:07:31.793 に答える