django - 如何将变量从模板传递到Django中的视图
问题描述
我无法将模板中的变量获取到另一个视图中。
我有一张有一些记录的表。每行都有一个按钮,我想单击该按钮并在另一页中检索有关记录的更多详细信息。我一直在网上寻找,但我无法弄清楚我应该如何实现这一点。我尝试过的所有东西要么崩溃,要么返回 None。
列表.html
{% for trainee in trainees_list %}
<tr>
<td>{{ trainee.last_name }}</td>
<td>{{ trainee.first_name }}</td>
<td><a class="btn btn-primary" href="{% url 'traineedetails'%}" value="{{ trainee.pk }}" >View</a></td>
</tr>
{% endfor %}
视图.py
def traineedetails(request):
if request.method == 'GET':
trainee_details = request.POST.get('trainee.pk')
print(trainee_details)
return render(request, 'trainee_details.html')
def listoftrainees(request):
trainees_list = UserTraining.objects.all()
return render_to_response('list.html', {'trainees_list': trainees_list})
网址.py
urlpatterns = [
path('traineedetails', views.traineedetails, name='traineedetails'),
path('listoftrainees', views.listoftrainees, name='listoftrainees'),
]
表格.py
class UserTrainingForm(forms.ModelForm):
scope_requirements = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=microscopes.MICROSCOPES)
class Meta:
model = UserTraining
fields = (
'first_name',
'last_name',
)
模型.py
class UserTraining(models.Model):
first_name = models.CharField('first name', max_length = 100)
last_name = models.CharField('last name', max_length = 100)
我希望能够单击表格行中的按钮并检索有关记录的更多信息。
解决方案
您直接在 url 中传递值,例如:traineedetails/<pk>
在模板中:
{% for trainee in trainees_list %}
<tr>
<td>{{ trainee.last_name }}</td>
<td>{{ trainee.first_name }}</td>
<td><a class="btn btn-primary" href="{% url 'traineedetails' trainee.pk%}">View</a></td>
</tr>
{% endfor %}
编辑你的 urls.py:
path('traineedetails/<pk>', views.traineedetails, name='traineedetails'),
然后你可以像这样在你的视图中检索它:
from django.shortcuts import get_object_or_404
def traineedetails(request, pk):
if request.method == 'GET':
#try to get your objet or throw a 404 error
trainee = get_object_or_404(UserTraining, pk=pk)
#pass it back to the template
return render(request, 'trainee_details.html',{'trainee':trainee})
推荐阅读
- spring - 使用分离的 Spring 后端构建 Angular 应用程序时的不同项目结构
- java - 在 Java8 中使用 orElseGet 与 orElse
- bash - 用 AWK 加入两个文件,一个来自控制台的文件
- bolt-cms - 如何在 Bolt CMS 中实施 SEO
- php - 我想根据三个表显示这样的摘要
- javascript - 我无法从我的 JSON 函数 (Javascript) 中返回值
- c# - 如何在列表中搜索
- python - 导入本地模块的python pytest导入模块
- mysqli - 如何使用 pdo db 连接功能进行查询?
- php - 用 php 解析 HTML