Django/Python网站的哪个部分需要更改以在搜索栏中获得预先编写的文本?
我有.css,它对搜索栏的位置进行硬编码。搜索栏使用的变量为keywords,在forms.py中调用。最后,view.py可能是在搜索栏中获取预先填充的“搜索工具”文本的另一种可能性 我可以像在浏览器的HTML编辑器中那样设置值=“搜索工具”,设置这些代码中的哪一个 style.css文件对我来说可能是最令人困惑的,因为我可以将初始定义更改为[type=“text”、value=“Search for a tool”],然后搜索栏移动到html页面上的新位置,并且没有预写的文本Django/Python网站的哪个部分需要更改以在搜索栏中获得预先编写的文本?,python,css,django,html,Python,Css,Django,Html,我有.css,它对搜索栏的位置进行硬编码。搜索栏使用的变量为keywords,在forms.py中调用。最后,view.py可能是在搜索栏中获取预先填充的“搜索工具”文本的另一种可能性 我可以像在浏览器的HTML编辑器中那样设置值=“搜索工具”,设置这些代码中的哪一个 style.css文件对我来说可能是最令人困惑的,因为我可以将初始定义更改为[type=“text”、value=“Search for a tool”],然后搜索栏移动到html页面上的新位置,并且没有预写的文本 ... .s
...
.search{
width:350px;
margin-left:120px;
float:left;
position:relative;
height:75px;
}
.search input[type="text"], .search input[type='number'], .search input[type="password"] {
margin:20px;
margin-top:25px;
padding: 4px; background:#d8f6fd;
float:right;
border: 1px solid #66c8de;
-moz-box-shadow: 0 1px 1px #ddd inset, 0 1px 0 #fff;
-webkit-box-shadow: 0 1px 1px #ddd inset, 0 1px 0 #fff;
box-shadow: 0 1px 1px #ddd inset, 0 1px 0 #fff;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
}
.search input[type="submit"]{
margin-top:25px;
margin-right:25px;
float:right;
}
...
格式为.py。这使用了一个char字段。当我尝试在CharField中添加参数时,会出现很多错误(blank=False,default=“输入工具名”)
我猜没有任何东西可以用这个.py初始化搜索栏
class Search(forms.Form):
keywords = forms.CharField()
py似乎只处理来自搜索栏的请求,我假设它可以初始化
def search(request):
template = loader.get_template('sharesystem/search.html')
form = Search()
if request.method == 'GET':
form = Search(request.GET)
if form.is_valid():
keywords = form.cleaned_data['keywords']
tools = Tool.objects.filter(name__contains = keywords).values()
if (keywords is ''):
tools = Tool.objects.all()
context = RequestContext(request, {
'tools' : tools, 'form':form })
return HttpResponse(template.render(context))
tools = Tool.objects.all()
context = RequestContext(request, {
'form' : form,'tools' : tools})
return HttpResponse(template.render(context))
当我为输入添加新行时,为了跟进base.html,我得到了多个搜索框。调用class='search'时,我应该在该div中输入什么
<div id="headerwrapper">
<div class="centerframe">
<div id="logo">
<a href="{% url 'sharesystem:index' %}" ><img src="{{STATIC_URL}}sharesystem/images/logo.png"border="none" ></a>
</div>
<div class='search' >
<input type="text" name="keywords" placeholder="Enter a tool name"/>
<form action="/sharesystem/search/" method="GET" style='margin-bottom:0;'>
{% csrf_token %}
<input type="submit" value="Search" />
{{ search_form.keywords }}
</form>
</div>
<div style="padding-top:24px;">
<form action="/sharesystem/search/" method="GET" style='margin-bottom:0;'>
{% csrf_token %}
<input type="submit" value="View All Tools" />
</form>
</div>
</div>
</div>
{%csrf_令牌%}
{{search_form.keywords}}
{%csrf_令牌%}
使用输入
HTML标记的占位符
属性:
<input type="text" name="keywords" placeholder="Enter a tool name">
您应该将loo带入表单的数据中
form = Form(initial={'value': 'My Search!'})
就你而言:
表单=搜索()
如果request.method==“GET”:
form=Search(request.GET,initial={'value':'My Search!'})根据您的业务需要和需要支持的浏览器,我建议使用HTML输入的“占位符”属性 您需要重写forms init函数并从那里更新widget attrs字典,或者在CharField声明中显式设置widget
关键字=forms.CharField(widget=forms.TextInput(attrs={'placeholder':'Search for a tool'}))删除了html页面中的搜索框。什么是loo以及它在哪里为表单提供初始数据?我识别init。@JoeWaldron检查我的更新。在视图中创建表单实例时,请尝试传递初始参数。初始化在
form=Search()
中。我可以将其更改为form=Search(initial={'value':'My Search!'}
或者让行看起来像form=Search()form=form(initial={'value':'My Search!'})
是的,您可以试试。form(initial={'value':'My Search!')就足够了。我尝试了,得到了错误异常值:未定义名称“Form”
我看到
有一些进展,但它创建了一个重复的搜索栏。