URL 和视图中的 DJango 过滤字段
Filtering field in DJango in the URL and in the view
假设我有一个包含 2 个字段的模型:
class Bands(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True)
name = models.CharField(db_column='NAME')
type = models.CharField(db_column='TYPE')
...
我想做的是用一个模板列出所有的字段数据。例如:
{% block content %}
{{ field_name }}
<ul>
{% for band in bands %}
<li>{{ band }}</li>
{% endfor %}
</ul>
{% endblock %}
那么,我应该如何制作我的url?
url(r'^band/$', views.band, name='band')
或
url(r'^band/(?P<band>\w+)/$', views.band, name='band')
该页面的 link 将是:
<a href="{% url 'band' 'name' %}">Name</a>
在视图中,我采用如下值:
def band(request, field):
results = Results.objects.all()
names = [n.name for n in results]
types = [t.type for t in results]
if field == 'name':
bands = names
else:
bands = types
return render(request, 'band.html', {'bands': bands, 'field_name': field})
这样做是否正确(在视图和 url 中)?提前致谢。
嗯,最简单 的事情就是使用 DetailView。
from .models import Band
class BandDetailView(DetailView):
model = Band
在 urls.py
中是这样的:
from band.views import BandDetailView
url(r'^band/(?P<pk>\d+)/?$', BandDetailView.as_view(), name='band-detail')
并且在模板中:
{% url 'band-detail' pk=1 %}
也就是说,您的模型对我来说意义不大,视图中的 Led Zeppelin vs. Deep Purple 位也是如此。你能解释一下你的项目/需要更多吗?
假设我有一个包含 2 个字段的模型:
class Bands(models.Model):
id = models.IntegerField(db_column='ID', primary_key=True)
name = models.CharField(db_column='NAME')
type = models.CharField(db_column='TYPE')
...
我想做的是用一个模板列出所有的字段数据。例如:
{% block content %}
{{ field_name }}
<ul>
{% for band in bands %}
<li>{{ band }}</li>
{% endfor %}
</ul>
{% endblock %}
那么,我应该如何制作我的url?
url(r'^band/$', views.band, name='band')
或
url(r'^band/(?P<band>\w+)/$', views.band, name='band')
该页面的 link 将是:
<a href="{% url 'band' 'name' %}">Name</a>
在视图中,我采用如下值:
def band(request, field):
results = Results.objects.all()
names = [n.name for n in results]
types = [t.type for t in results]
if field == 'name':
bands = names
else:
bands = types
return render(request, 'band.html', {'bands': bands, 'field_name': field})
这样做是否正确(在视图和 url 中)?提前致谢。
嗯,最简单 的事情就是使用 DetailView。
from .models import Band
class BandDetailView(DetailView):
model = Band
在 urls.py
中是这样的:
from band.views import BandDetailView
url(r'^band/(?P<pk>\d+)/?$', BandDetailView.as_view(), name='band-detail')
并且在模板中:
{% url 'band-detail' pk=1 %}
也就是说,您的模型对我来说意义不大,视图中的 Led Zeppelin vs. Deep Purple 位也是如此。你能解释一下你的项目/需要更多吗?