0

ユーザーの登録とサインインに使用されるすべてのモデル、ビュー、およびフォームを含むアカウントという名前のアプリがあります。
アカウントアプリのすべてのフォームを含むと思われるアプリフォルダーの外にあるテンプレートがあります。
テンプレートにフォームを表示しようとして問題が発生しています。
誰かが私を助けることができますか?
コードの一部を次に示します。

accounts/forms.py

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

# Safe from injection, etc.
class UserRegistrationForm(UserCreationForm):
    email = forms.EmailField(required = True)
    first_name = forms.CharField(max_length=30, required=True)
    last_name = forms.CharField(max_length=30, required=True)

    class Meta:
        model = User
        fields = ('username','email','password1', 'password2','first_name','last_name')

    def save(self, commit=True):
        user = super(UserRegistrationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        if commit:
            user.save()

        return user

accounts/view.py

from forms import UserRegistrationForm
def register_user(request):
    if request.POST:
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')
    else:
        form = UserRegistrationForm()
    args = {}
    # prevent forgery
    args.update(csrf(request))

    # empty form
    args['form'] = form
    return render_to_response('signup.html', args)

def register_success(request):
    return render_to_response('signup_success.html')

最後に、アカウント フォルダーにないテンプレートです。settings.py と同じフォルダにあります。

signup.html

{% extends "base.html" %}

{% block content %}

<form action="" method="post"> {% csrf_token %}
    <ul>
        {{accounts.form.as_ul}}
    </ul>

    <input type="submit" name="submit" value="Register">
</form>

{% endblock %}

アップデート

プロジェクト マネージャーからテンプレートの移動の許可を得て、accounts/template に移動し、render を response アドレスに変更しました。現在、フォームが送信されないという新しい問題があります。OMG 何が起こっているのですか??

4

3 に答える 3

0

テンプレートは と同じディレクトリにあってはなりませんsettings.py

これは、アカウント アプリ内のディレクトリにある必要があります: accounts/templates/signup/html.

Django プロジェクトを正しく構成した場合、Django は Web サーバーの再起動後にテンプレートを取得する必要があります。

于 2013-10-15T17:21:01.037 に答える
0

formご覧のとおり、変数をテンプレートに渡していますが、使用しようとしていますaccounts.form

お役に立てれば。

于 2013-10-15T17:22:08.717 に答える