Django - Актуализиране на управлението на потребители/акаунти

Опитвам се да актуализирам информацията за потребителския си акаунт чрез формуляр. Имам формуляра ok, който просто показва поле за парола/имейл и почиства полето за имейл. Имам проблем с възгледите си. Това е грешката, която получавам: Мениджърът не е достъпен чрез потребителски екземпляри. Това са моите възгледи: my_account функция.

def my_account(request):
    user = request.user
    if request.method == 'POST':
        form = MyAccountForm(request.POST)
        if form.is_valid():
            user = user.objects.get(username=username),
            password = user.set_password('password2'),
            email = forms.cleaned_data['email']
            user.save()
            return HttpResponseRedirect('/')
    else:
        form = MyAccountForm()
    variables = RequestContext(request, {
        'form': form,
    })
    return render_to_response(
        'my_account.html',
        variables
    )

person Megan    schedule 11.12.2012    source източник
comment
това обаче е точен дубликат на: stackoverflow.com/questions/3874187/. Моля, опитайте просто да потърсите вашето съобщение за грешка, преди да публикувате нов въпрос.   -  person Colleen    schedule 11.12.2012
comment
Направих го и очевидно това не беше единственият ми проблем. Винаги първо търся собствените си грешки, но понякога това не винаги е полезно.   -  person Megan    schedule 11.12.2012


Отговори (1)


където имате

user.objects.get

ти искаш

User.objects.get

objects е мениджърът, посочен в съобщението за грешка, а user е препратеният екземпляр (екземпляр на User, действителният клас)

person Colleen    schedule 11.12.2012
comment
добре, сега се казва, че потребителското име не е дефинирано, така че добавих потребителско име към параметрите до заявката и към моите променливи с формуляри, но сега получавам грешката: my_account() приема точно 2 аргумента (1 даден) - person Megan; 11.12.2012
comment
Уау, тук има цял набор от проблеми. Звучи сякаш трябва 1: да прочетете съобщенията си за грешка, 2: да научите повече за Django, 3: да коригирате кода си. Нека се заемем с тези: 1. my_account() takes exactly 2 arguments (1 given)= променихте my_account, така че отнема 2 параметъра, но все още му давате само 1 (вероятно заявката). 2: Доколкото ми е известно, всички данни във формулярите на Django се сериализират в полето POST в request; променливите не се предават индивидуално. За достъп до username не трябваше да го добавяте като нов параметър, а да го извлечете от заявката. - person Colleen; 11.12.2012
comment
- person Colleen; 11.12.2012
comment
Опитвах се да го извлека от заявката например user = request.user(user = User.username), знам, че не е правилно, но не можах да разбера как да го извикам. Причината, поради която го добавих като параметър, беше, че го направих в предишна страница за изглед - user_page и тя работи правилно, така че исках да видя дали това ще помогне. Все още съм много нов в това, така че съжалявам, че все още не разбирам напълно всичко. Освен това чета съобщенията си за грешка, но понякога не разбирам напълно проблема. Знаех, че има проблем с потребителското име и че не съм го викал никъде, просто не знаех къде. - person Megan; 11.12.2012
comment
като пример вижте как извличате email. Това вероятно е начинът, по който искате да извлечете username. Въпреки че сега, когато препрочитам кода ви, защо изобщо правите това? Вече имате user от момента, в който сте направили user = request.user. Освен това този фрагмент user = request.user(user = User.username) е грешен по много причини: 1. в request.user, user е свойство, а не функция, 2: сравнявате user с username в тази клауза, 3: както казах по-горе, User е име на клас, а не име на екземпляр и като такъв няма да има свойство .username. - person Colleen; 11.12.2012
comment
Във всеки случай, мисля, че тъй като вече имате user, трябва просто да изтриете реда, където го преназначавате, и е готово. - person Colleen; 11.12.2012
comment
Моят професор иска да извикаме потребителското име, така че как да го извлека от request.user? - person Megan; 11.12.2012
comment
Какво означава извикването на потребителското име? А user е екземпляр на User, така че има всички свойства на всеки друг екземпляр на User... като потребителско име... - person Colleen; 11.12.2012