Django registration, primary key issue -
i have issue authentication process. create signin process giving user ability create new account using mail, account inactive until edits providing first name, last name , password. gave try go url edit profile receive error related pk ..
error:
environment: request method: post request url: http://127.0.0.1:8000/registration/users/2/edit/ django version: 1.11.3 python version: 3.6.2 installed applications: ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'registration'] installed middleware: ['django.middleware.security.securitymiddleware', 'django.contrib.sessions.middleware.sessionmiddleware', 'django.middleware.common.commonmiddleware', 'django.middleware.csrf.csrfviewmiddleware', 'django.contrib.auth.middleware.authenticationmiddleware', 'django.contrib.messages.middleware.messagemiddleware', 'django.middleware.clickjacking.xframeoptionsmiddleware'] traceback: file "/users/raphaelbendenoun/anaconda/envs/mydjangoenv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) file "/users/raphaelbendenoun/anaconda/envs/mydjangoenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) file "/users/raphaelbendenoun/anaconda/envs/mydjangoenv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) file "/users/raphaelbendenoun/documents/testregis/registration/views.py" in update_profile 41. user = get_object_or_440(user, pk=pk) #find user instance id in db exception type: nameerror @ /registration/users/2/edit/ exception value: name 'get_object_or_440' not defined 'pk' urls:
from django.conf.urls import url, include registration import views app_name = 'registration' urlpatterns = [ url(r'^register/$', views.register, name='register'), url(r'^users/(?p<pk>\d+)/edit/$', views.update_profile, name="edit-user-profile"), ] form.py:
from django import forms django.contrib.auth.models import user .models import myuser django.contrib.auth import get_user_model user = get_user_model() class form(forms.modelform): password = forms.charfield(widget= forms.passwordinput()) class meta(): model = user fields= ('first_name','last_name','email','password','company') class inactiveform(forms.modelform): class meta(): model = user fields= ('email',) class updateprofile(forms.modelform): email = forms.emailfield(required=true) first_name = forms.charfield(required=true) last_name = forms.charfield(required=true) password = forms.charfield(widget= forms.passwordinput()) class meta: model = user fields = ('email', 'first_name', 'last_name','password') def clean_email(self): email = self.cleaned_data.get('email') if email , user.objects.filter(email=email).count(): raise forms.validationerror('this email address in use. please supply different email address.') return email def save(self, commit=true): user = super(registrationform, self).save(commit=false) user.email = self.cleaned_data['email'] if commit: user.save() return user views.py
from django.shortcuts import render django.views import generic django.views.generic import templateview django.views.generic.edit import createview, updateview, deleteview .forms import inviteform invitations.models import invitation .models import project django.core.urlresolvers import reverse # create views here. class homepage(templateview): template_name= 'index.html' class candidateindex(templateview): template_name= 'candidateindex.html' class hrindex(templateview): template_name= 'hrindex.html' class projectdetailview(generic.detailview): model = project template_name = 'project_details.html' class projectcreate(createview): model = project fields = ['project_name'] template_name = 'project_form.html' def create_invite(request): if request.method == "post": invite_form = inviteform(data=request.post) if invite_form.is_valid(): email1 = invite_form.cleaned_data['email1'] email2 = invite_form.cleaned_data['email2'] email3 = invite_form.cleaned_data['email3'] email4 = invite_form.cleaned_data['email4'] email5 = invite_form.cleaned_data['email5'] in invite_form.cleaned_data: invite = invitation.create(i) invite.send_invitation(request) print("the mail went") #return reverse('website:projectdetails', kwargs = {'pk' : self.pk} ) else: print("your form not valid") else: invite_form = inviteform() return render(request, 'team_invite.html', {'invite_form': invite_form}) project_detail.html:
{% extends 'base.html' %} {% block body %} <div class="container"> <div class="jumbotron"> <h2>welcome project {{project.project_name}} detail page</h2> </div> <div class="invite-team"> <a href="{% url 'website:addteam' %}">gogo</a> </div> </div> {% endblock%}
you pass pk variable urls.py view method, view method did not expect have change update_profile method signature so:
update_profile(request, pk) .... your method has more erros inside one:
form = updateprofile(request.post, instance=request.user) it probaly should be:
user = get_user_model() user = get_object_or_404(user, pk=pk) #find user instance id in db form = updateprofile(request.post, instance=user)
Comments
Post a Comment