Wie kann ich ein user-Profil mit Django?
Ich bin neu in django und ich bin versucht derzeit, eine website zu bauen, die es Nutzern erlaubt, um sich anmelden und andere Nutzer-profile. So weit ich habe es geschafft, lassen Sie die Benutzer anmelden, aber ich kann nicht herausfinden, wie andere Völker profile.
Jedes Profil verwendet die Benutzer-Benutzername, erstellen Sie eine url für Ihr Profil. Derzeit, wenn ich melden Sie sich als Benutzer, und ändern Sie die URL zu einem anderen Benutzer-Profil-URL, es zeigt immer noch die aktuelle Benutzer-Profil. Ich möchte etwas ähnliches wie pinterest, wo jede person, ob Sie angemeldet sind oder nicht anzeigen können, Völker-profile.
Jede mögliche Hilfe würde geschätzt!
Ansicht
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})
Projekt-url
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}), )
app-url
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'),
)
Vorlage
{% 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 %}
InformationsquelleAutor ollysmall | 2015-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
project_name/urls.py
:E. g :
<app_name>/urls.py
.E. g :
aus . import Ansichten
<app_name>/views.py
nehmenusername
(Benutzername des Benutzers), um Ihre Informationen und senden Sie Sie in eine VorlageE. g :
<app_name>/templates/<app_name>/user_profile.html
anzeigenuser
Objekt :Ersetzen
<app_name>
durch den Namen Ihrer app und es sollte gut sein.in Ihrer Sicht haben Sie zum abrufen von Daten von username pass durch die url
profile/(?P<username>[a-zA-Z0-9]+)$
. Fügen Sie Ihre aktuelle Ansicht zu deiner Frage bitteIch habe gerade hochgeladen mein code 🙂 hoffentlich wird es jetzt mehr Sinn
Dein code ist gut, Mann sollte es funktionieren. Fügen Sie Ihre Vorlage zu, bitte
Gerade hochgeladen Vorlage, die sehr grundlegende im moment!
InformationsquelleAutor Louis Barranqueiro