2017-02-06 7 views
0

views.pyユーザーがdjangoにプロファイルを1つだけ作成できるようにするには?

class CreateProfile(LoginRequiredMixin, CreateView): 
login_url = '/accounts/login/' 
template_name = 'profile/new_profile.html' 
model = Profile 
fields = ['full_name','profile_pic','title','summary'] 

def user_redirect(request): 
    if request.user.is_authenticated(): 
     return render(request, '#redirect to some page') 

ユーザーは、すでに彼は、プロファイル作成/ "URLにアクセスすることはできないはずでログインしている場合。

+0

モデルを追加してください? – MicroPyramid

+0

モデルは必要ありません。ログインに必要なmixinを使用しているため、ユーザーが認証されていない場合、コードはすでにページを表示しません。 – Sayse

+0

私の質問は、ユーザーが1つのプロファイルのみを作成したいということです。ユーザーが既にプロファイルを持っている場合、 'profile/create' URLにアクセスできないはずです –

答えて

2

あなたがサインアップするか、次のデコレータでログインビューを飾ることができます...

from django.http import HttpResponseRedirect 

def anonymous_required(view_function, redirect_to = None): 
    return AnonymousRequired(view_function, redirect_to) 

class AnonymousRequired(object): 
    def __init__(self, view_function, redirect_to): 
     if redirect_to is None: 
      from django.conf import settings 
      redirect_to = settings.LOGIN_REDIRECT_URL 
     self.view_function = view_function 
     self.redirect_to = redirect_to 

    def __call__(self, request, *args, **kwargs): 
     if request.user is not None and request.user.is_authenticated(): 
      return HttpResponseRedirect(self.redirect_to) 
     return self.view_function(request, *args, **kwargs) 

Anonymous Required Decorator

関連する問題