如何将值从 html 传递到 django 中查看?

Posted

技术标签:

【中文标题】如何将值从 html 传递到 django 中查看?【英文标题】:how to pass value from html to view in django? 【发布时间】:2020-02-18 05:54:18 【问题描述】:

我已经制作了这个 html 代码:

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

这将在网页上正确显示专业,但我想使用此字符串从视图中的另一个表中获取某些内容。

如何将此字符串传递给查看?

编辑: 这是我的观点.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)

这是我的模板: % 扩展 '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 %

我正在尝试按用户拥有的相应专业显示 bookfile 表中的书名。正确地显示具有“cs”属性的书籍,因为我手动将“cs”放在了 get 函数中。我正在尝试将主要字符串从模板发送到视图,以便我可以将用户的主要内容放在 get 函数中。或者有没有其他方法可以做到。

【问题讨论】:

你能解释更多吗? 显示你的代码你做了什么 @AmitPatel 我正在编辑 【参考方案1】:

您需要在模板中使用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/

【讨论】:

我不是要保存输入,而只是保存数据库中的一个字符串,我只能在 html 模板中提取该字符串 是的,但这是将其传递给您的视图的一种方式。如果您不希望它可见,请隐藏输入并在需要时使用 javascript 自动提交表单 我可以传递多个值吗?【参考方案2】:

首先你要借助queryset获取model的值,放入字典中,然后和模板一起传递。

在视图中:

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>

【讨论】:

以上是关于如何将值从 html 传递到 django 中查看?的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从 javascript 函数传递到 django 视图

如何将值从视图传递到不可编辑的字段django python

将值从 fullCalendar 单击传递到 Django 模板

如何将值从Django模板传递给View

将值从 Django 视图传递到 AngularJS 插入的模板

如何将值从javascript传递到iOS UIWebView