我是从事新闻网站工作的新手(或者至少最近几天尝试过很多“问题”,哈哈),试图尽我所能学习Django。
这就是我想要做的:
我有一个Article模型,它曾经有6个图像字段,我曾经将它们发送到模板并渲染图像,每个图像字段都有自己的名称,并且在世界范围内都很好。 然后,我承担了将Article图片放在单独的Image模型中的任务。 所以我这样做了:
ss -tn 'dport ldap || sport ldap'
但是到目前为止,我无法使用来访问模板中的图像
#include <stdio.h>
/*Define structure
* ------------------*/
struct date
{
int month;
int day;
int year;
};
/*Declare function prototypes
* -----------------------------*/
struct date get_date (struct date);
long int calc_date_number (struct date); /* now return the number */
/* use int instead of void */
int main (void)
{
struct date udate, calc_date;
printf("Welcome to the Date to Day-of-the-Week program.\n\nThe program will give the day of the"
"for any date from 1/1/1900.\n\n");
calc_date = get_date (udate); /* store the result in calc_date */
long int n = calc_date_number (calc_date); /* store the result in n */
printf("calculated date number : %ld\n", n); /* display the value just calculated */
return 0; /* return code of the program */:
}
/*Define functions get_date
* ----------------------------*/
struct date get_date (struct date udate)
{
do
{
printf ("Enter the date (mm/dd/yyyy): ");
scanf ("%d/%d/%d", &udate.month, &udate.day, &udate.year);
if (udate.month < 1 || udate.month > 12)
printf ("Invalid month. Please re-enter date.\n\n");
else if (udate.day <1 || udate.day > 31)
printf ("Invalid day. Please re-enter date.\n\n");
else if (udate.year < 1900)
printf ("Invalid year. Please re-enter date.\n\n");
else if (udate.month ==2 && udate.day == 29 && (udate.year !=0 && (udate.year == 0 ||
udate.year % 400 != 0)))
printf ("Invalid date. Not a leap year. Please re-enter date.\n\n");
}while (udate.month < 1 || udate.month > 12 || udate.day < 1 || udate.day > 31 || udate.year <
1900);
return udate;
} /*End get_date*/
/*Define function calc_date_number
* ----------------------------------*/
long int calc_date_number (struct date calc_date)
{
printf("calc_date is %i %i %i\n\n", calc_date.month, calc_date.day, calc_date.year);
long int n;
if (calc_date.month <= 2)
{
calc_date.year = calc_date.year - 1;
calc_date.month = calc_date.month + 13;
}
else
{
calc_date.month = calc_date.month + 1;
}
n = 1461 * calc_date.year / 4 + 153 * calc_date.month / 5 + calc_date.day;
return n;
}/*End function calc_date_number*/
或任何其他组合。这是为什么 ? 我是否正确设置了模型?有人建议我将模型字段从ForeignKey更改为OneToOneField,但是对于为什么以及如何我没有得到很多反馈。
那么,我将如何创建一个遍历Articles模型的for循环,然后获取每个Article的相关图像?我本质上希望它的行为像我以前一样拥有6个不同的字段。 (我必须这样做,这是任务的一部分)。
这是我的观点和我用来遍历文章并在首页上显示6条最新新闻的“索引”模板。 (请忽略标签,我知道它们不能像这样工作。模板只是为了让您了解我在说什么)
我的views.py:
class Article(models.Model):
title = models.CharField('title', max_length=200, blank=True)
slug = AutoSlugField(populate_from='title', default="",
always_update=True, unique=True)
author = models.CharField('Author', max_length=200, default="")
description = models.TextField('Description', default="")
is_published = models.BooleanField(default=False)
article_text = models.TextField('Article text', default="")
pub_date = models.DateTimeField(default=datetime.now, blank=True)
article_category = models.ForeignKey(Category, on_delete="models.CASCADE", default="")
def __str__(self):
return self.title
class ArticleImages(models.Model):
article = models.ForeignKey(Article, on_delete="models.CASCADE", related_name="image")
image = models.ImageField("image")
name = models.CharField(max_length=50, blank=True)
我在旧模型中使用的模板:
{{ article.image.url }} or {{ article.image.image.url }}
谢谢!
答案 0 :(得分:1)
您需要遍历图像,因为针对单个文章对象有许多图像。您可以像下面这样在模板中显示图像:
{% if latest_article_list.articleimages %}
{% for articleimage in latest_article_list.articleimages.all %}
<img src="{{ articleimage.image.url }}" class="d-block w-100" alt="...">
{% endfor %}
{% endif %}