我尝试在Django中创建一个搜索栏,通过显示页面的名称和url来搜索页面。
现在,我只能显示一个网页的网址作为纯文本时,它被搜索。
我希望网址是一个可点击的链接,导致该网页。
**这是我的代码目前的样子:**搜索结果页面search_page.html:
{% extends 'contents/main.html' %}
{% block content %}
<center>
{% if searched %}
<h1>You searched for {{searched}}</h1>
<br/>
{% for page in pages %}
{{ page }} - {{page.web}}<br/> <!-- page displays name of page and page.web displays url as text -->
{% endfor %}
{% else %}
<h1>You forgot to search for a page</h1>
{% endif %}
</center>
{% endblock content %}
在www.example.com网站中实现search_page. html的方法views.py:
def search_page(request):
if request.method == 'POST':
searched = request.POST['searched']
pages = Pages.objects.filter(name__contains=searched)
return render(request, 'contents/search_page.html', {'searched':searched, 'pages':pages })
页面models.py的www.example.com类:
class Pages(models.Model):
name = models.CharField('Page Name', max_length=120)
web = models.URLField('Page URL') <!-- this gets the url of the page -->
def __str__(self):
return self.name
"我所尝试的“
我试过将page.web转换为URL,但它给了我一个TemplateSyntaxError:<br/> {% for page in pages %} {{ page }} - {{% url 'page.web'%}}<br/>
2条答案
按热度按时间6qqygrtg1#
如果
page.web
变量包含url(从www.example.com文件中指定的路径名称生成urls.py),则在html中,您需要指定如下内容,以使页面成为超链接如果
page.web
中有absolute url
,则可以按如下所示重写超链接。qij5mzcb2#
好的一些建议和修改,首先你的搜索表单
注意:action = url可能与您的名称不同
那么第二个是您的视图,(您需要使用get方法,而不是POST)
最后,在搜索结果页面中,只需使用href标记