urls template por pasar parametros example bootstrap django django-views django-urls

template - Campo de filtrado en DJango en la URL y en la vista



render django (1)

Digamos que tengo un modelo con 2 campos:

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'') ...

Lo que quiero hacer es listar todos los datos de los campos con solo una plantilla. Por ejemplo:

{% block content %} {{ field_name }} <ul> {% for band in bands %} <li>{{ band }}</li> {% endfor %} </ul> {% endblock %}

Entonces, ¿cómo debería hacer mi url?

url(r''^band/$'', views.band, name=''band'')

o

url(r''^band/(?P<band>/w+)/$'', views.band, name=''band'')

El enlace a esa página sería:

<a href="{% url ''band'' ''name'' %}">Name</a>

En la vista, tomo los valores así:

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})

¿Es esta la manera correcta de hacer esto (en la vista y en la url)? Gracias por adelantado.


Bueno, lo más simple es usar DetailView .

from .models import Band class BandDetailView(DetailView): model = Band

Y en urls.py algo así como:

from band.views import BandDetailView url(r''^band/(?P<pk>/d+)/?$'', BandDetailView.as_view(), name=''band-detail'')

Y en la plantilla:

{% url ''band-detail'' pk=1 %}

Dicho esto, su modelo no tiene mucho sentido para mí, al igual que los bits de Led Zeppelin contra Deep Purple en la vista. ¿Puedes explicar tu proyecto / necesitar un poco más?