django - 如何为 Django 表单文本输入值使用动态变量?
问题描述
我正在研究 project1 cs50w wiki,我在 forms.py 中创建了一个表单。它是文本输入,我正在尝试为此文本输入“{{ pagetitle }}”传递动态值。但它在渲染时打印“{{ pagetitle }}”,就像它在文本输入中一样。如果我使用 HTML 表单,这一切都有效,但是当我尝试 Django 表单时,我无法弄清楚如何将变量传递给显示器。
表格.py
from django import forms
class newTitle(forms.Form):
q = forms.CharField(label='New Page Title', max_length=100, widget=forms.TextInput(
attrs={
'id': 'titleCheck',
'class': 'search',
'type': 'text',
'placeholder': 'Type Topic Title Here...',
'onblur': 'blurFunction()',
'value': '{{ pagetitle }}'
}))
视图.py
def new_topic(request):
newTitle_form = newTitle()
context = {
"newTitle_form": newTitle_form,
}
return render(request, "encyclopedia/CreateNewPage2.html", context)
def new_topic_t(request, entry):
newTitle_form = newTitle()
return render(request, "encyclopedia/CreateNewPage2.html", {
"newTitle_form": newTitle_form,
"pagetitle": entry.capitalize()
})
def myCheckFunction(request):
searchPage = request.GET.get('q','')
if(util.get_entry(searchPage) is not None):
messages.info(request, 'The Page '+ searchPage + ' Already Exists, Do You Want To Change It Or Edit It!')
return HttpResponseRedirect(reverse("new_topic_t", kwargs={'entry': searchPage}))
else:
return HttpResponseRedirect(reverse("new_topic_t", kwargs={'entry': searchPage}))
createNewPage2.html
{% csrf_token %}
<div class="form-group" style="margin-right: 20%">
<form id="newTitle" action="{% url 'check' %}" method="GET">
{% block newTitle %}
{{ newTitle_form }}
{% endblock %}
</form>
</div>
<script>
function blurFunction() {
var newTitleText = document.getElementById("titleCheck");
if (newTitleText.value !== null && newTitleText.value !== "") {
document.getElementById("newTitle").requestSubmit();
}
}
</script>
<script>
window.onload = function() {
var buttonElement = document.getElementById("changeTopic");
var newTitleText = document.getElementById("titleCheck");
if ((!buttonElement) && (newTitleText.value == "")) {
document.getElementById('titleCheck').focus();
} else if ((buttonElement) && (newTitleText.value != "")) {
document.getElementById('changeTopic').focus();
} else {
document.getElementById('NewTopicText').focus();
}
}
</script>
网址.py
urlpatterns = [
path("", views.index, name="index"),
path("save", views.save, name="save"),
path("<str:withoutwikientry>", views.load_wiki, name="load_wiki"),
path("wiki/random", views.random, name="random"),
path("wiki/search", views.search, name="search"),
path("wiki/myCheckFunction", views.myCheckFunction, name="check"),
path("wiki/edit/<str:entry>", views.edit, name="edit"),
path("wiki/<str:entry>", views.generate_page, name="generate_page"),
path("wiki/createNewPage/", views.new_topic, name="new_topic"),
path("wiki/createNewPage/<str:entry>", views.new_topic_t, name="new_topic_t"),
]
这是呈现的页面的屏幕截图。
解决方案
感谢 NKSM,我通过更改以下代码使其正常工作
def new_topic_t(request, entry):
newTitle_form = newTitle()
newTitle_form.fields["q"].widget.attrs.update({'value': entry.capitalize()})
context = {
"newTitle_form": newTitle_form,
}
return render(request, "encyclopedia/CreateNewPage2.html", context)
推荐阅读
- flutter - 在此提供程序示例中的此简单提供程序错误中,尝试从小部件树外部侦听提供程序公开的值
- angular - Angular / SCSS - 组件中的样式深层嵌套 div
- python - Python 监视文件更改并识别用户
- node.js - nodemailer不发送ejs文件
- javascript - 如何使用 chrome 扩展更改默认页面
- python - 如何检查定界符是否在python中是多字符
- asp.net-mvc - ASP.NET MVC。如何使用异步函数生成的模型返回视图
- javascript - 如何防止 Firebase 请求伪造?
- html - NextJs 将 prop 作为 className 传入
- python - 在 Selenium driver.get 之后打印 dom