如何在Python中同时循环两件事并在Django temp中使用它

2024-06-01 03:30:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图循环浏览一个列表,在视图中返回两个内容,并在模板中显示。我正在抓取数据,并尝试获取文本和href,以便在模板中使用它们。我对django和python都是新手。首先我试着用我的大脑做这个视图.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
}

但还是没用。什么是正确的语法来达到我想要的结果。欢迎任何帮助或指导。你知道吗


Tags: textin视图模板forgetcontextlink
2条回答

必须在views.py中定义视图(它是一个函数),如下所示(template.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

列出代码中的tuples

 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 %}

相关问题 更多 >