Nano Hash - криптовалюты, майнинг, программирование

Доступ к объекту запроса из form.save

Я использую модуль pyfacebook для Django для реализации facebook Connect для одного из моих сайтов, я не использую локальный объект пользователя, потому что я хочу использовать Facebook только для входа в систему.

Я понимаю, что не могу получить доступ к объекту запроса из метода сохранения в форме Django, так как же мне получить доступ к объекту facebook, который предоставляет вам предоставленное промежуточное ПО?

Я хочу прикрепить UID пользователя facebook к объекту, созданному из формы, я мог бы добавить его как скрытое поле в форму, но тогда люди могли бы просто изменить его, чтобы казалось, что вопрос пришел от кого-то другого.

Каков наилучший способ передать этот uid методу save()?

08.01.2010

Ответы:


1

Правильный способ сделать это — использовать экземпляр объекта, который вы пытаетесь сохранить, например так:

question = Question(user=int(request.facebook.uid))
form = QuestionForm(request.POST, instance=question)
question = form.save()
question.put()

Сделайте это в своем представлении, а НЕ в методе save() вашего объекта.

Будьте осторожны, если какое-либо из полей является обязательным, вам придется указать их в экземпляре возражателя, вызывающем form.save, выдаст исключение.

09.01.2010

2

Вы можете установить переменную в форме при ее создании.

просмотры.py

def myview(request):
    form = FacebookConnectForm(request)

формы.py

class FacebookConnectForm(forms.Form):
    def __init__(self, instance):
        self.instance = instance

    def save(self):
        print self.instance
        ...
08.01.2010
  • Поскольку ему всегда будет нужен запрос в форме, я бы рекомендовал сделать его аргументом формы init . Таким образом, он должен был бы создать экземпляр, как в: form = FacebookConnectForm(request) 08.01.2010
  • Я не думаю, что на самом деле передача объекта запроса в форму - это правильно, что, если мне нужно будет использовать форму для редактирования объекта позже? У меня не будет объекта запроса для передачи. 09.01.2010
  • Где бы вы использовали эту форму? У меня никогда не было случая для форм за пределами моих представлений, поэтому всегда были доступны объекты запросов. 10.01.2010
  • но, сообщая форме о представлении, вы создаете сильную связь между представлением и формой, гораздо лучше держать их отдельно. Если вы соедините представление с формой, которую вы ДОЛЖНЫ передать, хотите вы этого или нет. 10.01.2010
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..