0

私が作成しているWebサイトの規模が小さいため、JSONをスキップして、実際のhtmlまたは何をすべきかを示す1つの単語を返すajaxページを作成することにしました。new_user_pass = new_user(request.POST)サーバーで突然戻ってくるため、コードにエラーがあるようです500 (INTERNAL SERVER ERROR)。Webサイトは、ユーザーが以前にログインしたことがあるかどうかを確認し、ログインしたことがある場合は、セッションの作成後にホームページにリダイレクトします(まだコード化されていません)。 )。持っていない場合:JQueryに追加情報を要求するように指示する単語を返します。どこかにエラーがある場合は、ファイルの最後に到達してエラーを返す必要があります(まだ完全にコード化されています)。

これはforms.pyファイルです:

class log_in(forms.Form):
    username = forms.EmailField()
    password = forms.PasswordInput()

class new_user(forms.Form):
    username = forms.EmailField()
    password = forms.PasswordInput()
    password2 = forms.PasswordInput()
    pen_name = forms.CharField(max_length=30)

views.pyファイル:

def user_log_in(request):
    #add stuff for ajax request
    user_pass = log_in(request.POST)
    er = []
    if user_pass.is_valid():
        cleaned_info = user_pass.cleaned_data
        user_object = User.objects.filter(email = cleaned_info['username'])
        if user_object.exists():
            #create session
            return HttpResponseRedirect('/home')
        else:
            new_user_pass = new_user(request.POST)#where bug is
            cleaned_info = new_user_pass.cleaned_data
            if new_user_pass.is_valid():
                if cleaned_info['password'] == cleaned_info['password2']:
                    new_user = User(activated = 0, email = cleaned_info['username'], pen_name = cleaned_info['pen_name'], password = cleaned_info['password'])
                    new_user.save()
                    msg = ""
                    if send_mail('Activate', msg, '*******', [cleaned_info['username']], fail_silently=False):
                        return HttpResponse('e_act')
                    else:
                        er.append("Error Sending Email")
                else:
                    er.append('Passwords are not the same')
            elif cleaned_info['TN']:
                for e in new_user_pass.errors:
                    er.append(e)
            else:
                return HttpResponse('n_usr')
    return HttpResponse('SOS')

そして、ここにエラーがあるとは思いませんが、Jquery関数は次のとおりです。n_usr= false;

function log_in () {
    //add code to check if it's the wrong usr, pass, correct, or if they've never logged in before.
    //code to reveal section

編集:Djangoがエラーを出しましたnew_user' referenced before assignment

4

2 に答える 2

2

new_userフォームをビューにインポートしていません。

また、パスワードをプレーンテキストで保存する独自のUserクラスを作成していないことを願っています。それは悪いことです。

于 2012-07-30T14:12:31.513 に答える
1

次のフラグメントは間違っています:

def new_user():
    print "in new_user"

def f():
    new_user()
    if True:
        new_user = 23
        print "new_user"

f()

new_userの初期化が進んでいるため、コンパイラはf()のスコープ内にあると判断するため、new_user()を呼び出すことはできません。

new_userを2つの異なるものとして使用します-フォームのコンストラクターとして

new_user(request.POST)

およびユーザーインスタンスとして:

new_user = User(activated = 0, email = cleaned_info['username'], pen_name = cleaned_info['pen_name'], password = cleaned_info['password'])

プログラミングスタイルの観点からも良くありません-まったく異なる変数に1つの名前を使用することです。

たとえば、ローカル変数に別の名前を使用でき、それはOKである必要があります。

new_user_inst = User(activated = 0, email = cleaned_info['username'], pen_name = cleaned_info['pen_name'], password = cleaned_info['password'])
...
于 2012-07-30T14:17:19.337 に答える