'Issue with django request,get user from bd
SO,I want to get user details from database and show them in user.html,but I cant do it. They dont display in this file. I tried to do class UserView(ListView):, but it wasnt working. Maybe I didnt understand request.
view.py
def registerform(request): ##registerform
form = SightUp(request.POST or None)
if form.is_valid():
user_obj = form.save()#Сохранение значений в датабазе методом .save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
email = form.cleaned_data.get('email')
user = authenticate(username=username,password =raw_password,email=email)
login(request,user)
return redirect('/userprofile/')# ЗАМЕНИТЬ
context = {'form':form }
return render(request,'user.html',context)
#def userprofiles(request):
# userall = detailsuser.objects.all()
# context = {
# 'objects':userall
# }
# return render(request,'userprofile.html', context)
class UserView(ListView):
model = User
template_name = 'userprofile.html'
context = 'detailsuser'
def get_queryset(self):
return detailsuser.objects.filter(user = self.request.user)
forms.py
class SightUp(UserCreationForm):
first_name = forms.CharField( widget = forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'First Name'}), max_length=32, help_text='First name')
last_name = forms.CharField( widget = forms.TextInput(attrs={'class':'form-control','placeholder':'Last name'}), max_length=32)
email = forms.EmailField(widget =forms.TextInput(attrs={'class':'form-control', 'placeholder': 'Email'}), max_length =64,help_text='Enter valid Email')
username = forms.CharField(widget =forms.TextInput(attrs={'class':'form-control','placeholder':'Username'}))
password1 = forms.CharField(widget =forms.PasswordInput(attrs={'class':'form-control','placeholder':'Password1'}))
password2 = forms.CharField(widget =forms.PasswordInput(attrs={'class':'form-control','placeholder':'Password2'}))
class Meta(UserCreationForm.Meta):
model = User
fields = UserCreationForm.Meta.fields + ('first_name','last_name','email')
user.html
{% for i in detailsuser %}
<h1> yourname: i.email </h1>
{% endfor %}
<h1>Your last name:</h1>
<h1>Your nickname:</h1>
models.py
class detailsuser(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
Solution 1:[1]
Your challenge stems from the register view you need to make a conditional test for the POST method like so:
def registerform(request): ##registerform
if request.method == 'POST': #Here is where you make the condition for POST
form = SightUp(request.POST or None)
if form.is_valid():
user_obj = form.save()#?????????? ???????? ? ???????? ??????? .save()
username = form.cleaned_data.get('username')
raw_password = form.cleaned_data.get('password1')
email = form.cleaned_data.get('email')
user = authenticate(username=username,password =raw_password,email=email)
login(request,user)
return redirect('/userprofile/')# ????????
else:
form = SightUp()
context = {'form':form }
return render(request,'user.html',context)
Your user html had a problem, you didn't add the {% endfor %} tag that's why you are not seeing any information. Do something like so:
{% for i in detailsuser %}
<h1> yourname: i.email </h1>
{% endfor %}
<h1>Your last name:</h1>
<h1>Your nickname:</h1>
{% endfor %}
Solution 2:[2]
I ansewer it. Problem was because of cycle in my template
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | MihailCapone |
