urls tutorial template examples bootstrap python django django-templates django-views

python - tutorial - href django



¿Cómo puedo mostrar un perfil de usuario usando Django? (1)

Soy nuevo en django y actualmente estoy intentando crear un sitio web que permita a los usuarios iniciar sesión y ver otros perfiles de usuarios. Hasta ahora, he logrado que los usuarios inicien sesión pero no puedo encontrar la forma de ver los perfiles de otras personas.

Cada perfil usa el nombre de usuario de los usuarios para crear una url para su perfil. Actualmente, si me registro como un usuario y cambio la URL a otra URL del perfil de los usuarios, aún se muestra el perfil actual de los usuarios. Quiero algo similar a pinterest en el que cualquier persona, ya sea que haya iniciado sesión o no, puede ver los perfiles de las personas.

¡Cualquier ayuda sería apreciada!

Ver

from django.http import HttpResponse from django.shortcuts import render from howdidu.forms import UserProfileForm from howdidu.models import UserProfile from django.contrib.auth.decorators import login_required from django.shortcuts import get_object_or_404 from django.contrib.auth.models import User def index(request): context_dict = {''boldmessage'': "I am bold font from the context"} return render(request, ''howdidu/index.html'', context_dict) #user profile form @login_required def register_profile(request): profile = UserProfile.objects.get(user=request.user) if request.method == ''POST'': form = UserProfileForm(request.POST, request.FILES, instance=profile) if form.is_valid(): form.save() return index(request) else: print form.errors else: form = UserProfileForm() return render(request, ''howdidu/register_profile.html'', {''form'': form}) #profile page using user name as url @login_required def profile_page(request, username): user = get_object_or_404(User, username=username) return render(request, ''howdidu/profile.html'', {''profile_user'': user})

URL del proyecto

from django.conf.urls import patterns, include, url from django.contrib import admin from django.conf import settings from registration.backends.simple.views import RegistrationView class MyRegistrationView(RegistrationView): #redirects to home page after registration def get_success_url(self,request, user): return ''/register_profile'' urlpatterns = patterns('''', # Examples: # url(r''^$'', ''howdidu_project.views.home'', name=''home''), # url(r''^blog/'', include(''blog.urls'')), url(r''^admin/'', include(admin.site.urls)), url(r'''', include(''howdidu.urls'')), url(r''^accounts/register/$'', MyRegistrationView.as_view(), name=''registration_register''), #redirects to home page after registration (r''^accounts/'', include(''registration.backends.simple.urls'')), url(r''^(?P<username>/w+)/'', include(''howdidu.urls'')), #do i need this? ) # media if settings.DEBUG: urlpatterns += patterns( ''django.views.static'', (r''^media/(?P<path>.*)'', ''serve'', {''document_root'': settings.MEDIA_ROOT}), )

URL de la aplicación

from django.conf.urls import patterns, url from howdidu import views urlpatterns = patterns('''', url(r''^$'', views.index, name=''index''), url(r''^register_profile/$'', views.register_profile, name=''register_profile''), url(r''^(?P<username>/w+)/$'', views.profile_page, name=''user_profile''), )

modelo

{% extends ''howdidu/base.html'' %} {% load staticfiles %} {% block title %}{{ user.username }}{% endblock %} {% block body_block %} {% if user.is_authenticated %} <h1>{{ user.username }} welcome to your profile page</h1> <img src="{{ user.userprofile.profile_picture.url }}" width = "150" height = "150" /> <h2>{{ user.userprofile.first_name }}</h2> <h2>{{ user.userprofile.second_name }}</h2> <h2>{{ user.userprofile.user_country }}</h2> {% endif %} {% endblock %}


  1. Registre las URL de su aplicación en la carpeta de configuración project_name/urls.py : por ejemplo:

from django.conf.urls import include, url from django.contrib import admin from django.conf import settings urlpatterns = [ url(r''^user/'', include(''<app_name>.urls'')), url(r''^admin/'', include(admin.site.urls)), ]

  1. Agregue una nueva ruta en su <app_name>/urls.py . P.ej :

de . vistas de importación

urlpatterns = [ url(r''profile/(?P<username>[a-zA-Z0-9]+)$'', views.get_user_profile), ]

  1. Agregue una vista en <app_name>/views.py que tome el username (nombre de usuario del usuario) para recuperar su información y enviarla a una plantilla, por ejemplo:

from django.shortcuts import render def get_user_profile(request, username): user = User.objects.get(username=username) return render(request, ''<app_name>/user_profile.html'', {"user":user})

  1. Cree un archivo de plantilla en <app_name>/templates/<app_name>/user_profile.html para mostrar user objeto de user :

{{ user.username }} {{ user.email }} {{ user.first_name }} {{ user.last_name }}

Reemplace <app_name> por el nombre de su aplicación y debería ser bueno.