【发布时间】:2022-01-21 18:35:10
【问题描述】:
问题: 我最近在 Python Anywhere 上发布了一个站点,并且不得不经历更改通过我的 SQLite 数据库设置的所有页面 URL 的繁琐过程。由于 root 已从本地端口更改为“username.pythonanywhere.com”,因此所有 URL 都已损坏。
我这样做没有问题,但我意识到为了进行本地开发,我需要将数据库中的 URL back 更改为它们的本地端口路径。这显然是我们使用动态 URL 的原因。但是,硬编码的 URL 是这样的,因为我在呈现的 html 页面上使用 for 循环来循环访问数据库中的那些静态 URL。
我的问题是,如何在 for 循环中使用动态 URL {% url app:template %}?理想情况下,我希望在我的数据库中有一个包含app:template 信息的字段,这样我就可以遍历数据库中的所有项目,并通过从该字段中获取信息来动态链接它们。
我已尝试在 models.py 中创建一个新的 CharField,其字符串值为 {% url app:template %},希望它能与 href="{{ project.href_str}}" 的模板语言一起使用,但这似乎并不去工作。我已经在字段字符串值和模板语言值的各种组合中尝试过这种方法。我还尝试了这种将模板语言用作字符串的方法,方法是在我的views.py return 语句中添加一个字典,不同之处在于调用href="{{ project_urls.appname }}" 中的键。这里也没有运气。
为了记录,我已经在循环之外尝试了我想要的动态 URL,它们运行良好,所以我认为这不是 url 映射本身的问题。
这是 HTML:
在我的数据库中,project.href_str 的值为 {% url 'calculator:calculator' %}
{% for project in projects %}
<div class="col-lg-3 col-md-6">
{% if project.href_str %}
<a href="{{ project.href_str }}" target="_blank">
<img src="{{ project.image.url }}" class="img-fluid mb-2" style="">
</a>
{% else %}
<img src="{{ project.image.url }}" class="img-fluid mb-2" width="500" height="500">
{% endif %}
<h3 class="">{{ project.title }}</h3>
<p>{{ project.description }}</p>
</div>
{% endfor %}
【问题讨论】:
标签: python django django-models django-urls