如何同时循环浏览两件事 Python 并在 django 模板中使用它



我正在尝试循环浏览列表并在视图中返回两件事并将其显示在我的模板中。我正在抓取数据,并尝试获取文本和 href,以便我可以在我的模板中使用它们。我对django和python都是新手。首先,我尝试在我的 views.py 中这样做:

 for link in soup.find_all('a'):
    text = link.text
    href = link.get
#links = soup.find_all("a")
ella = "ella"
context = {
    #"links": links,
    "ella": ella,
    "text": text,
    "href": href

这在我的模板中.html

{% for link in links %}
    {{ text }}
    {{ href }}
{% endfor %}

我也试过这个

{% for link in links %}
    {{ link.text }}
    {{ link.href }}
{% endfor %}

它不起作用,在我看来,我收到以下错误

local variable might be referenced before assignment

所以我添加了全局

 global text, href
for link in soup.find_all('a'):
    text = link.text
    href = link.get
#links = soup.find_all("a")
ella = "ella"
context = {
    #"links": links,
    "ella": ella,
    "text": text,
    "href": href
}

但它仍然没有奏效。实现我想要的结果的正确语法是什么。欢迎任何帮助或指导。

在代码中列出元组:

 links = []
 for link in soup.find_all('a'):
    links.append((link.text, link.get))
context = {'links': links}

然后在模板中使用它们作为:

{% for text, href in links %}
    {{ text }}
    {{ href }}
{% endfor %}

你必须像这样定义你的视图(它是一个函数),views.pytemplate.html必须在templates目录中):

from django.shortcuts import render
def myview(request):
    links = soup.find_all('a')
    return render(request, 'template.html', dict(links=links))

而你的urls.py必须包含此视图的绑定:

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$', views.myview, name='index'),
]

render()接收上下文字典作为第三个位置参数。

https://docs.djangoproject.com/en/1.9/topics/http/shortcuts/#django.shortcuts.render

相关内容

最新更新