2017-08-17 1 views
0

Nach dem Einrichten der All-Auth App, wenn Benutzer sich anmeldet, wird er umgeleitet: accounts/profile/ Seite, die uns sagt, dass die Ansicht nicht ' t existieren.Django all-auth app, wie man/account/profile page um benutzerdefinierte Ansicht anzuzeigen

Ich versuche herauszufinden, was für eine Sache dort enthalten ist, und entschied, dem Benutzer zu erlauben, ihre grundlegenden Informationen zu ändern.

Ich habe eine users App mit einem Teacher Modell, das wie folgt aufgebaut ist:

class Teacher(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    rate = models.CharField(max_length=200) 
    availability = models.BooleanField(default=False) 
    verified = models.BooleanField(default=False) 

Ich möchte die accounts/profile/ Seite ein Formular zeigen, die diese Informationen enthalten. Der Benutzer kann diese Felder bearbeiten und auch deren Vorname, Nachname und E-Mail bearbeiten, die zu einem anderen Modell gehören - User.

Ich kann nicht scheinen, damit anzufangen. Wenn ich eine Detailansicht für die Profilseite erstellt, erhalte ich eine Fehlermeldung, dass:

Kein PK oder SLUG bereitgestellt

Ich möchte Django den aktuellen Benutzer Informationen ändern, nicht auf der Grundlage der Primärschlüssel in der URL. Benötige ich eine benutzerdefinierte Ansicht? Ich habe [andere Lösungen 1 betrachtet, aber sie scheinen den privaten Schlüsselparameter zu verwenden.

Was ich brauche, ist eine Arbeits-View-Funktion, etwas Ähnliches (nicht funktioniert):

def get_teacher_info(request): 
    current_user = request.user 
    teacher = get_object_or_404(Teacher, username=current_user.username) 
    return render(request, 'account/profile.html', { 
      'user':current_user, 
      'teacher': teacher, 
      'error_message': "The field is blank", 
     }) 

und in der accounts/urls.py Ich habe hinzugefügt:

url(r"^profile/$", views.get_teacher_info, name="account_profile"), 

aber wenn ich machen Anrufe wie in der HTML-Vorlage, bekomme ich: Ungültige Block-Tag in Zeile 5: 'teacher.rate'. Hast du vergessen, dieses Tag zu registrieren oder zu laden?

+0

Haben Sie Folgendes festgelegt: LOGIN_REDIRECT_URL, ACCOUNT_SIGNUP_FORM_CLASS & ACCOUNT_ADAPTER in settings.py? – pije

+0

Und bitte versuchen Sie es auch: url (r "^ profile/$", ansichten.get_teacher_info, name = "get_teacher_info"), – pije

+0

Ich habe das oben nicht eingestellt, aber ich hob den Code von der Standard-Umfragen App. Und es funktioniert dort, ohne diese Variablen zu setzen. Ich versuchte auch den 2. Kommentar, ohne Erfolg – Roma

Antwort

0

Die Funktion def get_teacher_info (request) und der Eintrag urls.py funktionieren. Sieht aus wie das Problem in der Vorlage sein kann. Verwenden Sie {{anstelle von {% -Tags. Verwenden Sie also {{teacher.rate}} nicht {% teacher.rate%} in der Vorlage.