Как передать значение из HTML для просмотра в Django? - PullRequest
2 голосов
/ 22 октября 2019

Я сделал этот HTML-код:

<h3>your major is {{user.userprofile.major}}</h3>

Это будет корректно отображать майор на веб-странице, но я хочу использовать эту строку, чтобы получить что-то из другой таблицы.

Как мне передать эту строку для просмотра?

edit: вот мой view.py

def dashboardView(request):
    obj = BooksFile.objects.all()
    query = BooksFile.objects.filter(book_major='cs)
    return render(request, 'dashboard.html', {'books': obj, 'major': query})


def registerView(request):
    if request.method == "POST":
        form = UserCreationForm(request.POST)
        profile_form = UserProfileForm(request.POST)
        if form.is_valid() and profile_form.is_valid():
            user = form.save()

            profile = profile_form.save(commit=False)
            profile.user = user

            profile.save()
            return redirect('login_url')
    else:
        form = UserCreationForm()
        profile_form = UserProfileForm()
    context = {'form': form, 'profile_form': profile_form}
    return render(request, 'registration/register.html', context)

вот мой шаблон: {% extends 'index.html'%}

{% block content %}
    <h1>Welcome, {{user.username}}</h1>
    <h2>Your major is {{user.userprofile.major}}</h2>

    {% for book in books %}
     <h3>Your book name is {{book.book_name}}</h3>
    {% endfor %}

{% endblock %}

Я пытаюсь показать названия книг из таблицы книжного файла по соответствующим основным номерам, которые есть у пользователя. Правильно, это показывает книги, которые имеют атрибут "cs", потому что я вручную добавил "cs" в функцию get. Я пытаюсь отправить мажорную строку из шаблона для просмотра, чтобы я мог поместить все основные данные пользователя в функцию get. Или есть другой способ сделать это.

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Прежде всего вы должны получить значение модели с помощью набора запросов, поместить его в словарь и затем передать его вместе с шаблоном.

В представлениях:

def get(self, request):
    queryset = Model_name.objects.all()
    ctx = {
        'queryset': queryset,
    }
    return render(request, 'page_name(or template_name).html', ctx)

в шаблоне:

<form action="{%url'(your_view_name without brackets)'%}" method="POST">

  {% for data in queryset%}
    <span class="username"><a href="#">{{data.name(field of your model)}}</a> . 
    </span>
    <span class="email"><a href="#">{{data.email(field of your model)}}</a> . 
    </span>
  {% endfor%}
</form>
0 голосов
/ 22 октября 2019

Вам необходимо использовать form в своем шаблоне и отправить его для вызова вашего view. то есть

<form action="your_view_url" method="POST">
    <input type="text" name="major" value="{{user.userprofile.major}}"/>
    <input type="submit"/>
</form>

а затем, по вашему мнению, вы получаете доступ с помощью:

if request.POST:
    major = request.POST.get('major')

Согласно документации: https://docs.djangoproject.com/en/2.2/topics/forms/

...