Как автоматически заполнять поля в Django Threadedcomments на основе user.is_authenticated - PullRequest
1 голос
/ 08 января 2012

Мне кажется, это просто.Если пользователь прошел проверку подлинности, автоматически заполните поля формы и не показывайте их.Если пользователь не аутентифицирован, покажите поля формы.Я искал везде, и я не могу найти ответ.Кто-нибудь знает какой-нибудь способ решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 08 января 2012

Этот пример взят из реальной системы, над которой я работал.Надеюсь, это поможет вам.

import datetime

from django.conf import settings
from django.contrib.contenttypes.models import ContentType
from django.utils.encoding import force_unicode
import django.contrib.comments.forms
from current_user.middleware import get_current_user

class AuthCommentForm(django.contrib.comments.forms.CommentForm):
    def get_comment_create_data(self):
        """
        Returns the dict of data to be used to create a comment. Subclasses in
        custom comment apps that override get_comment_model can override this
        method to add extra fields onto a custom comment model.
        """
        return dict(
                content_type=ContentType.objects.get_for_model(self.target_object),
                object_pk=force_unicode(self.target_object._get_pk_val()),
                user_name=get_current_user().username,
                user_email=get_current_user().email,
                user_url='',
                comment=self.cleaned_data["comment"],
                submit_date=datetime.datetime.now(),
                site_id=settings.SITE_ID,
                is_public=True,
                is_removed=False,
                )

AuthCommentForm.base_fields.pop('url')
AuthCommentForm.base_fields.pop('name')
AuthCommentForm.base_fields.pop('email')
AuthCommentForm.base_fields.pop('honeypot')
AuthCommentForm.base_fields['comment'].label = False
0 голосов
/ 08 января 2012

в вашем шаблоне вы можете сделать что-то вроде этого:

{% if user.is_authenticated %}
<form>
<input type="hidden" name="username" value="{{ user.username }}" />
</form>
{% else %}
<!-- use your "regular" form here -->

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...