Pereiti prie turinio

Django user objektas ir laukelių update`as


Rekomenduojami pranešimai

Sveiki, susidūriau su problema, dėl kurios negaliu judėti į priekį.

 

Kuriu registraciją su aktivacija, viskas okey, kol nesugalvojau padaryti aktivacijos resend`o.

Turiu tokia prisijungimo f-ją:

def loginRequest(request):
       if request.method == 'POST':
           form = LoginForm(request.POST)

           if form.is_valid():
               username = form.cleaned_data['username']
               password = form.cleaned_data['password']
               user = authenticate(username=username,password=password)

               if user is not None:
                   if user.is_active:
                       login(request,user)
                       return HttpResponseRedirect('/profile/')
                   else:
                       return HttpResponseRedirect('/activate_error/')
               else:
                   return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))
           else:
               return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))
       else:
           form = LoginForm(request.POST)
           return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))

Jeigu vartotojas yra neaktyvavęs paskyros tai jis nukreipiamas į activate_error puslapį. Ir ten turi galimybę paprašyti, kad būtų iš naujo atsiųstas aktivacijos kodas. Tačiau kaip žinoti, kuris vartotojas yra nukreipiamas?

 

 

Taip pat klausimas, kaip update`tinti sukurtus field`us? Tarkim turiu active_account Charfield ir noriu po kurio laiko pakeisti informaciją tame laukelyje?

 

Dėkui

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sveiki, susidūriau su problema, dėl kurios negaliu judėti į priekį.

 

Kuriu registraciją su aktivacija, viskas okey, kol nesugalvojau padaryti aktivacijos resend`o.

Turiu tokia prisijungimo f-ją:

def loginRequest(request):
       if request.method == 'POST':
           form = LoginForm(request.POST)

           if form.is_valid():
               username = form.cleaned_data['username']
               password = form.cleaned_data['password']
               user = authenticate(username=username,password=password)

               if user is not None:
                   if user.is_active:
                       login(request,user)
                       return HttpResponseRedirect('/profile/')
                   else:
                       return HttpResponseRedirect('/activate_error/')
               else:
                   return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))
           else:
               return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))
       else:
           form = LoginForm(request.POST)
           return render_to_response('base.html',{'form':form},context_instance=RequestContext(request))

Jeigu vartotojas yra neaktyvavęs paskyros tai jis nukreipiamas į activate_error puslapį. Ir ten turi galimybę paprašyti, kad būtų iš naujo atsiųstas aktivacijos kodas. Tačiau kaip žinoti, kuris vartotojas yra nukreipiamas?

 

 

Taip pat klausimas, kaip update`tinti sukurtus field`us? Tarkim turiu active_account Charfield ir noriu po kurio laiko pakeisti informaciją tame laukelyje?

Pirmiausiai -

 

Dėkui

Gali persiųsti userio id sesijoje, kitame viewe pasiimti.

 

Dėl updeitinimo, tai labai paprasta, jei vieną userį nori:

u = User.objects.get(pk=1) # tarkim
u.username = 'vardas'
u.save()

Viskas. Aišku, jei su šimtu taip darysi, tai neefektyvu bus, nes darys 100 užklausų, tam yra update metodas, kuris updeitins visiems, atitinkantiems sąlygą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Taip pat kaip ir įdėjai, request.session['userid']. Prie sesijos gali prieiti taip pat, kaip prie paprasto python žodyno :)

 

Dabar iškilo kita problema. Negaliu iš User prieiti prie laukelių esančių praplėstoje UserProfile klasėje.

user_id = request.session.get('userid')
       user = User.objects.get(pk=user_id)
       user.activation_key

negaliu pasiekti activatio_key

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nes jie ir nėra User modelyje, o UserProfile.

prof = user.get_profile()
print prof.activation_key

Dokumentacija.

 

Žinau, kad nėra, todėl ir įdomu kaip pasiekti. Beje, taip bandžiau ir nepadada išmeta, kad "UserProfile matching query does not exist." Tik nesuprantu kodėl, nes print user viskas okey, vadinais randa, o kai bandau paimti profile neranda.

user_id = request.session.get('userid')
       user = User.objects.get(pk=user_id)
       print user
       prof = user.get_profile()
       print prof.activation_key

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Žinau, kad nėra, todėl ir įdomu kaip pasiekti. Beje, taip bandžiau ir nepadada išmeta, kad "UserProfile matching query does not exist." Tik nesuprantu kodėl, nes print user viskas okey, vadinais randa, o kai bandau paimti profile neranda.

user_id = request.session.get('userid')
       user = User.objects.get(pk=user_id)
       print user
       prof = user.get_profile()
       print prof.activation_key

Profilis pats nesusikuria - jį reikia sukurti pačiam po to, kai sukuriamas vartotojas. Tam pačiam dokumentacijos skyrely yra parašyta, kaip sukurti su signalu automatiškai po registracijos. Tiesa, tai nesukurs jau esamiems, jiems gali sukurti rankomis:

prof = UserProfile()
prof.user = user
prof.save()

Nuoroda į pranešimą
Dalintis kituose puslapiuose

As registracijos metu sukuriu profolį:

user_profile = UserProfile.objects.create(user = new_user, activation_Key = token_generator)

Tačiau būten šioje vietoje aš turiu ID ir pagal tą ID man reikia susirasti profili.

user_id = request.session.get('userid')
       user = User.objects.get(pk=user_id)

čia surandu User kuriam priklauso tas id, bet kaip man dabar prieiti prie activation_key?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...