0

デフォルトの UserRegistrationForm の表示を変更する方法を知りたいです。これは私の views.py ファイルです。

from django.http import *
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.contrib import auth
from django.core.context_processors import csrf
from django.contrib.auth.forms import UserCreationForm
from forms import MyRegistrationForm


def register_user(request):
    if request.method == 'POST':
        form = MyRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')
    args = {}
    args.update(csrf(request))

    args['form'] = MyRegistrationForm()
    return render_to_response('register.html', args)

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

これは register_user のテンプレートに表示されるものです。

{% extends "application/base.html" %}

{% block content %}
    <h2> Register </h2>
    <form action="/accounts/register/" method="post">{% csrf_token %}
        {{form}}
        <input type="submit" value="Register" />
    </form>
{% endblock %}

ビューに簡単にアクセスできるように、{{form}} のすべてのフィールドに個別にアクセスしたいのですが、どうすればよいですか??

また、これは私のforms.pyファイルです

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


class MyRegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)

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

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

助けてください私はdjangoが初めてですか??

4

2 に答える 2

3

次のことができます。

  1. appname/templates/registrationフォルダを作成
  2. このフォルダに、必要なすべての html テンプレート (login.html、password_change_form.html など) を配置します。フォルダー内の元のフォームを見て、元のテンプレートで何が行われているかを把握することをおdjango/contrib/admin/templates/registration (or ../admin)勧めします。
  3. 必要に応じてテンプレートをカスタマイズします。ssame css をすべてのページに適用したい場合は、独自の base.html を作成し、それを使用して拡張することをお勧めします{% extends "base.html" %}
  4. ビューを に追加しますurls.py。例:

    url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
    url(r'^accounts/logout/$', 'django.contrib.auth.views.logout_then_login'),
    url(r'^accounts/password_change_done/$', 'django.contrib.auth.views.password_change_done', name="password_change_done"),
    url(r'^accounts/password_change/$', 'django.contrib.auth.views.password_change', name='password_change'),
    

forms.py や views.py で何も定義する必要はありません。

于 2013-10-07T13:26:39.560 に答える
1

したがって、独自のフォームを作成します。

Django-x.x/django/contrib/admin/templatesコピーbase.html, base_site.html and login.htmlから_project_name/templates/admin

次に、必要に応じてファイルを変更します。

于 2013-10-07T13:02:17.400 に答える