我尝试使用 Django 显示 Mysql 数据库中的数据。用户通过 addSubscriber.html 页面输入所需数据以保存在数据库中,并被重定向到“report.html”页面,其中显示表中的所有数据(在本例中为订阅者)。
这是我的文件:views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.views import generic
from .models import Subscribers
from .forms import addSubsForm
@login_required
def dashboard(request):
user = request.user
context = {'user': user}
template = 'dashboard.html'
return render(request, template, context)
@login_required
def addSubscriber(request):
template = 'addSubscriber.html'
if request.method == 'POST':
form = addSubsForm(request.POST)
if form.is_valid():
f = form.save(commit=False)
f.save(using='db2')
data = Subscribers.objects.all()
return redirect('report', {'entries': data})
else:
form = addSubsForm()
return render(request, template, {'form': form})
@login_required
def report(request):
context = locals()
template = 'report.html'
return render(request, template, context)
表单.py
from .models import Subscribers
from django import forms
class addSubsForm(forms.ModelForm):
class Meta:
model = Subscribers
fields = '__all__'
报告.html
{%extends 'base.html'%}
{% block content %}
<h2 class="page-header">Subscribers List</h2>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>Bill Number</th>
<th>Name</th>
<th>Area</th>
<th>Phone Number</th>
<th>Header</th>
</tr>
</thead>
<tbody>
<tr>{% for entries in Subscribers %}
<td>{{ entries.billNumber }}</td>
<td>{{ entries.name }}</td>
<td>{{ entries.area }}</td>
<td>{{ entries.phoneNumber }}</td>
<td>{{ entries.name }}</td>
{% endfor %}
</tr>
</tbody>
</table>
</div>
{% endblock %}
我提交表单时出现的错误是:
NoReverseMatch at /dashboard/addSubscriber/
Reverse for 'report' with arguments '({'entries': <QuerySet [(1, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'21'), (2, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'1'), (3, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'2'), (4, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'3'), (5, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'4'), (6, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'5'), (7, u'Manish Ojha', u'Jirikhimti', u'9843003979', u'2000', u'6'), (8, u'Manish Ojha', u'Jiri', u'8989', u'989', u'27308472893478'), (9, u'Manish Ojha', u'Jiri', u'8989', u'989', u'27308472893478'), (10, u'Manish Ojha', u'Jiri', u'8989', u'989', u'1'), (11, u'Manish Ojha', u'Jiri', u'8989', u'989', u'1'), (12, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (13, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (14, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (15, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (16, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (17, u'Manish', u'jklj', u'89890', u'99089', u'8989'), (18, u'sdf', u'sdf', u'sdf', u'sdf', u'sdf'), (19, u'sdf', u'sdf', u'sdf', u'sdf', u'sdf'), (20, u'sfdf', u'jh', u'jhj', u'hj', u'hj'), '...(remaining elements truncated)...']>}, 1)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['dashboard/report/$']
即使这些数据是很久以前输入的,并且已经从数据库中删除,它们仍然显示在这里。
最佳答案
更改此行
return redirect('report', {'entries': data}, 1)
至
return redirect('report')
在报告 View 中
@login_required
def report(request):
data = Subscribers.objects.all()
template = 'report.html'
return render(request, template, {'entries' : data})
并更改 html 中的这一行
{% for entries in Subscribers %}
到
{% for entry in entries %}
<td>{{ entry .billNumber }}</td>
其他tds
也同样
关于python - 在Django中显示mysql数据库的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44849891/