python - Django,使用和不使用参数调用相同的视图函数
问题描述
我想将图像 ID 传递给同一个视图函数,并将图像传递给模板进行显示。
在我的分析应用程序 urls.py 中,我使用过
path('', views.image_analysis, name='home'),
path('<int:id>/', views.image_analysis, name='image_display'),
视图函数是
我应该怎么做才能获得函数中的 id。如果我喜欢 def image_analysis(request, id) 它给出错误。
def image_analysis(request):
if request.method == 'GET':
post_id = Image_upload.objects.get(id=id)
all_images = Image_upload.objects.filter(user=request.user)
return render(request,
'analysis/home.html',
{'images': all_images}
)
在 home.html 模板文件中。
{% block content %}
<div class="row">
<div class="col-sm-4">
<h2>Images</h2>
<ul class="list-group">
{% for image in images %}
<li class="list-group-item"><a href="{% url 'analysis:image_display' image.id %}">{{image.image_name}} -</a> {{image.status}}</li>
{% endfor %}
</ul>
</div>
<div class="col-sm-8"> Single Image will come here.</div>
</div>
模板 HTML 文件有 2 个块,左边的一个是用户点击时的所有图像我想在同一个地方显示图像。
你能帮我么。
解决方案
您可以使视图功能如下:
def image_analysis(request, id=None):
if request.method == 'GET':
try:
post_id = Image_upload.objects.get(id=id)
except:
<do the logic that you need if id doesnt exist in url>
all_images = Image_upload.objects.filter(user=request.user)
return render(request,
'analysis/home.html',
{'images': all_images}
)
如果你在函数定义中给出 id ,那么它总是会寻找给出的,因为它对你来说是可选的,我们把它作为id=None
.
id = None
在函数内部,您正在使用该 id 执行查询,但显然DB 表中不会有任何查询。因此,如果该except
块内的 url 中没有 id,您需要捕获该异常并执行逻辑处理。
推荐阅读
- javascript - 使用 Textarea、Button 和 javascript 设置自定义字体大小
- bigbluebutton - bigblueutton中的Webscoket错误连接问题
- python - Python:如何在 Android 上使用系统应用程序打开文件
- java - 我可以让类加载器动态查找 Java 类吗?
- javascript - LAT 和 LNG 未显示在 HTML 的输入表单上
- c# - 这里的三元运算符条件是什么 (true ? x : 0)
- python - 如何一次检查多个变量的值?
- javascript - 为什么我不断收到“错误:必须提供 media_id 字段。” 使用 Twit NPM 时?
- java - 如何使用 Gradle 指定 JVM 选项?
- java - org.json.JSONException:字符 0 处的预期文字值