Не используйте .values_list()
.Вместо этого поработайте с объектами и добавьте свое значение в качестве дополнительного атрибута.
Обратите внимание, что в вашем коде вы ограничиваете свой запрос SiteUrls
до 20 объектов, но затем вы пропингуете все SiteUrls
в своей БД.Я предполагаю, что вы хотите пропинговать только эти 20 SiteUrls
.
def index(request):
posts = Layout.objects.all()
urlpost = list(SiteUrls.objects.all()[:20])
for site_url in urlpost:
print(site_url.site_url)
res = os.system("ping -n 1 " + site_url.site_url )
if res == 0:
site_url.res = "connected"
else:
site_url.res = "not connected"
context = {
'posts':posts,
'urlpost':urlpost,
}
return render (request, 'posts/index.html', context)
Шаблон:
<table>
<tbody>
{% for SiteUrls in urlpost %}
<tr>
<td>{{SiteUrls.site_title}}</td>
<td>{{SiteUrls.site_url}}</td>
<td> {{SiteUrls.res}} </td>
<td><a style="margin-bottom:10px" class="waves-effect waves-light btn">open Site</a></td>
</tr>
{% endfor %}
</tbody>
</table>
Кроме того, обычно считается плохой идеей вызывать системные процессы, подобные этому, ввеб-запрос, как вы делаете здесь.Как только вы добьетесь этого, я призываю вас изучить концепцию очередей задач.