2017-11-21 4 views
-2

私はDjangoでログインフォームを作成していますが、管理インタフェースから「独立」なログインフォームを作成することはできません。私は、訪問者が管理者に登録されているユーザーである必要はないということを意味します。 PHPやMySQLによく似ています。私はPHPで必要なことをすることができますが、私はPythonを少し前から学んできましたが、Pythonでビルドしたいと考えています。 Djangoは本当に私にこの唯一のオプションを与えてくれますか?ログインフォームを作成する

Pinterestがこれをどうやって行ったのか疑問に思う。私はアプリの大部分がDjangoに組み込まれていることを知っていて、人々は一番上にログインフォームが表示されます。

+0

あなたはあなたがサインアップしてからあなたのウェブサイトにログインすることを意味しますか? –

+0

あなたは私の右の友人を持っています。管理者のユーザーである必要はありません。 –

+0

私はDjangoがまだ開発され開発されている非常に高度なフレームワークであることを理解しています。この特定の仕事は管理者を混乱させることなく作られていないことが私にはちょっと襲われます。 –

答えて

0

管理ログイン、as per the docsから独立しているという事実のログインビューにあります。

あなたのurls.pyに以下を追加します。

urlpatterns = [ 
    url('^', include('django.contrib.auth.urls')), 
] 

これは、次のURLパターンが含まれます:

^login/$ [name='login'] 
^logout/$ [name='logout'] 
^password_change/$ [name='password_change'] 
^password_change/done/$ [name='password_change_done'] 
^password_reset/$ [name='password_reset'] 
^password_reset/done/$ [name='password_reset_done'] 
^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm'] 
^reset/done/$ [name='password_reset_complete'] 

これらは、管理者以外のユーザーのログイン/変更やパスワードのリセットなどの機能を提供します。安全上の予防措置として、デフォルトではサインアップビューは含まれていません(多くの実装ではランダムな人がサインアップできないようにするため)。

0

この情報が役立つ場合があります。私はすべての説明を書いていないので、あなたがよく知らない属性や方法を探してください。また、この実装には、電子メールアドレスの確認などの多くのオプションがありません(これらは現在、私のために二次優先事項です)。 この場合、 'password'と 'username'はモデル属性です。 ここでは、ユーザがユーザ名とパスワードでアカウントを作成した後、そのユーザは認証され、ユーザはログインしてから指定されたURLにリダイレクトされます。 HTML /ブートストラップのログインフォームの場合

、これらを見て: https://bootsnipp.com/search?q=login

Djangoの実装のために次の手順に従うことができます。 1)htmlフォームを作成した後、適切なURL行にurls.pyを追加

2)そして、あなたのプロジェクトに新しいファイルを作成し、forms.pyという名前を付けます:Djangoのインポートフォームから

class UserForm(forms.ModelsForm): 
    email = form.CharField(widget=forms.EmailInput) 
    password = form.CharField(widget=forms.PasswordInput) 

    class Meta: 
    model = *write your model name here* 
    fields = *fields from your model. The model design should include 
      username email password and other attributes* 

3)views.pyで:

from django.views.generic import View 
from django.shortcuts import render, redirect 

class UserFormView(View): 
    form_class = UserForm 
    template_name = *your html template* 

    def get(self, request): 
    form = self.form_class(None) 
    return render(request, self.template_name, {'form':form}) 

    def post(self, request): 
    form = self.form_class(request.POST) 

    if form.is_valid(): 
     user = form.save(commit=False) 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     user.set_password(password) 
     user.save() 

     user = authenticate(username=username, password=password) 
     if user is not None and user.is_active: 
     login(request, user) 
     return redirect(*your redirecting url*) 
    return render(request, self.template_name, {'form':form}) 
+0

あなたは本当にdjangoの基本を理解し、それがどのように構築されているかを理解する必要があります。このようなことを処理する強力な方法がいくつか用意されています。多くの良いオンラインリソースもありますが、そのトピックについて徹底的な調査をしてください。 最も重要なことは、あなたは忍耐強く、かなりの時間を費やして公式の文書を参照する必要があります。 – Alex

関連する問題