Arhn - архитектура программирования

Не могу отобразить форму django в шаблоне

после прочтения документа по форме django я попытался создать свою собственную форму, но форма просто не будет отображаться в шаблоне. Я также задавал подобные вопросы в stackoverflow, но никакие решения не могут решить мою проблему.
У меня есть эта простая форма, основанная на модели. Вот фрагмент моего кода.
Модель:

class Tweet(activity.Activity, models.Model):
    user = models.ForeignKey('auth.User')
    text = models.CharField(max_length=160)
    created_at = models.DateTimeField(auto_now_add=True)
    #...

Форма:

class TweetForm(ModelForm):
    #text = forms.CharField(label = 'Tweet', max_length = 100)
    class Meta:
        model = Tweet
        fields = '__all__'

Вид:

def user(request, user_name):
    if not request.user.is_authenticated():
        return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
    form = TweetForm()
    user = get_object_or_404(User, username=user_name)
    feeds = feed_manager.get_user_feed(user.id)
    activities = feeds.get(limit=25)['results']
    activities = enricher.enrich_activities(activities)
    context = {
        'activities': activities,
        'user': user,
        'login_user': request.user,
        'form': form
    }
    return render(request, 'look/user.html', context)

HTML:

<form action="" method="post">
  {% csrf_token %}
  {{ form }}
<input type="submit" value="Tweet" />

Actually, I could render the form in the python shell so there`s nothing wrong with the form. However, I found out that the problem lies here:

form = TweetForm()
#...
context = {
    'activities': activities,
    'user': user,
    'login_user': request.user,
    'form': form   #see although the form is passed to the context,
}                  #I can`t access variable form in the html
return render(request, 'look/user.html', context)

Пара ключ/значение {'form':form} в context не отображается нормально, поэтому {{ form }} не работает. Но любые другие переменные в context работают нормально.
Меня это очень беспокоит, и я не могу понять, почему контекст не работает. Заранее спасибо за любые идеи.
P.S.
Я попробовал это:

{% if form %} form is true
{% else %} form is false
{% endif %}

в моем html-шаблоне, и результатом будет form is false, что указывает на то, что переменная form не передается через контекст или произошло что-то, что я не могу объяснить. Любые мысли по этому поводу будут оценены. Спасибо еще раз.


  • Как у вас дела с runserver ? 01.08.2016
  • runserver работает просто отлично, за исключением того, что форма не отображается и есть только кнопка. 01.08.2016

Ответы:


1

Я визуализировал свою форму, используя цикл в моем шаблоне:

{% for hidden in form.hidden_fields %}
                {{ hidden }}
            {% endfor %}

            {% for field in form.visible_fields %}
                {{ field.errors }}
                {{ field.help_text }}
                {{ field }}
                <br/>
                <br/>
            {% endfor %}

Это правильно отображает форму в моем проекте.

01.08.2016
  • Дело в том, что хотя я добавил форму в контексте, переменная form недоступна в шаблоне html. 01.08.2016
  • @scotthou Хм. Я не уверен, что это может быть. Я так понимаю, вы случайно закомментировали поле формы в коде здесь, но не в самом реальном коде? 01.08.2016
  • \@cmakie21 это потому, что я пытался создать форму, не основанную на существующей модели, чтобы увидеть, связана ли проблема с ModelForm. Оказалось, что нет. 01.08.2016

  • 2

    Наконец-то я понял, что пошло не так... И это какая-то глупость. На самом деле я визуализировал user.html в другой функции, поэтому все, что я делал в методе user, не работает. После создания экземпляра form в методе представления right TweetForm успешно визуализируется.

    02.08.2016
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..