2017-12-21 19 views
0

私はDjango(バージョン2.0)のWebサイトの登録ページを作っていますが、かなり厄介です。私は本当に弾丸ポイントと追加情報が正しく表示されないと確信しています。離れて。Django/Pythonの登録ページ

どうすればこのレジスタページをきれいに見えるようにすることができますか?つまりすべてのメッセージではなく、ユーザー名、パスワード、確認用のテキストボックスだけです。

ありがとうございます!

enter image description here

Register.html

<h2>Sign up</h2> 
<br> 
<form method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Sign up</button> 
</form> 

登録ビュー

def register(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      username = form.cleaned_data.get('username') 
      raw_password = form.cleaned_data.get('password1') 
      user = authenticate(username=username, password=raw_password) 
      login(request, user) 
      return redirect('index') 
    else: 
     form = UserCreationForm() 
    return render(request, 'todo/register.html', {'form': form}) 
+0

あなたが追加したフォームの検証とすべてのメッセージを場所に投稿できます – Exprator

+0

djangoのバージョンと2を指定していれば事態はもっと簡単になりました。それがcontrib.auth.forms.UserCreationForm独自のUserCreationForm ... –

+0

バージョン(2.0)が追加され、提供されたcontrib.auth.forms.UserCreationForm – SJ19

答えて

2

これを達成するための多くの方法があります。

  1. 手動

    <form action="" method="post">{% csrf_token %} {{ form.username.label }} {{ form.username }} ... </form>

  2. フォームは、カスタムテンプレートを設計し、マップのレンダリングの代わりに{{ form.as_p }}を使用してのデフォルトビューテンプレートでUserCreationForm()

    class MyForm(UserCreationForm): email = forms.EmailField(required=True) email.help_text = '' ...

  3. のオーバーライドフィールド名〜フォームフィールド名

希望します。

0

このUserCreationFormがどこから来たのか、あなたのdjangoのバージョンがどこに由来するのかは指定していませんでしたが、とにかくdjangoのコードソースを検索すると、デフォルトののさまざまなウィジェット/フィールドのhelp_text追加情報「は実際にはすぐに表示されるはずのです。そして、私が関心を持つ限り(ユーザーの観点から)、「すぐに表示される」ことは良いことだから、ユーザー名とパスワードを2回、3回以上再入力する必要はありませんシステムが予期している試行錯誤によって(あるいは、より頻繁には、このサイトに登録することをあきらめて)。今

あなたが本当に(途中で、それらの緩い半分)ユーザーを失望したい場合、あなたはもちろんのrendering the form manuallyにより、すべての有用なものの情報を隠すことができますので、メッセージが表示されている完全な制御を持って、いつ、どこでそしてどうやって。

関連する問題