J'essaie d'afficher un profil d'utilisateur pour mon site Web avec le détail CBV. Voici le code de views.py, urls.py, models.py et profile.html.Essayer d'afficher le profil utilisateur dans Django, mais la page est introuvable lors de la recherche d'URL
Un utilisateur existe avec le nom d'utilisateur "brian_weber", mais pour une raison quelconque, lorsque je navigue vers ce lien: http://0.0.0.0:8000/accounts/profile/brian_weber la page est introuvable. Mon application s'appelle "comptes".
Si quelqu'un pouvait me diriger dans la bonne direction pour obtenir la vue de l'url, ce serait grandement apprécié! J'ai cherché autour de Stack Overflow, mais rien n'a fonctionné que j'ai essayé.
Merci à l'avance,
Brian
views.py
from django.shortcuts import render
from django.shortcuts import get_object_or_404
from django.contrib.auth import login, logout, authenticate
from django.http import HttpResponseRedirect
from django.contrib.auth.forms import AuthenticationForm
from django.core.urlresolvers import reverse, reverse_lazy
from django.views import generic
from braces.views import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from . import forms
from . import models
class LoginView(generic.FormView):
form_class = AuthenticationForm
success_url = reverse_lazy('home')
template_name = "accounts/login.html"
def get_form(self, form_class=None):
if form_class is None:
form_class = self.get_form_class()
return form_class(self.request, **self.get_form_kwargs())
def form_valid(self, form):
login(self.request, form.get_user())
return super().form_valid(form)
def logout_view(request):
logout(request)
return HttpResponseRedirect(reverse('home'))
class SignUp(SuccessMessageMixin, generic.CreateView):
form_class = forms.UserCreateForm
success_url = reverse_lazy("login")
template_name = "accounts/signup.html"
success_message = "Your profile has been successfully created. Please log into your account."
class UserProfile(LoginRequiredMixin, generic.DetailView):
model = models.UserProfile
template_name = "profile.html"
class UserProfileUpdate(LoginRequiredMixin, generic.UpdateView):
model = models.UserProfile
urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^logout/$', views.logout_view, name="logout"),
url(r'^signup/$', views.SignUp.as_view(), name="signup"),
url(r'^profile/(?P<username>[a-zA-Z0-9]+)$',
views.UserProfile.as_view(),
name="profile"),
url(r'^profile/update/(?P<username>[a-zA-Z0-9]+)$',
views.UserProfileUpdate.as_view(),
name="update_profile"),
]
models.py
class UserProfile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
company = models.CharField(max_length=40, null=True)
position = models.CharField(max_length=40, null=True)
bio = models.CharField(max_length=140, blank=True, default="")
avatar = models.ImageField(blank=True, null=True, upload_to="avatars",
height_field=None, width_field=None)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
@ e4c5 Vous avez 17k réputation, une réponse moins ne vous blessera pas :-D –
@ e4c5 Merci de –
Merci MJafar! Maintenant, j'ai une autre erreur, cette fois c'est un ValueError. L'erreur est littérale invalide pour int() avec base 10: 'brian_weber'. Dois-je redéfinir la méthode get_object? Si oui, à quoi ressemblerait le code? – Brian