Django 1.11:将id传递给url以生成详细视图

时间:2018-01-03 16:51:10

标签: django

我列出了正确渲染的“nanas”(保姆)。现在,当有人点击其中一个时,我需要一个详细页面(仅针对点击的娜娜打开)。

我认为我的问题出现在我的所有Nanas的模板上,在href:

<a href="{% url 'app-administrador:nana' nana.id %}">

或者在网址中。

所有Nanas页面:

这是列出nanas View:

class NanasView(View):
    def get(self, request):
        nanas = Nana.objects.all()
        context = {'nanas': nanas}
        return render(request, 'app_administrador/nanas-registradas.html', context)

这是网址:

url(r'^referencias_de_nanas', views.NanasReferenciasView.as_view(), name='referencias_de_nanas'),

所有纳纳斯模板:

{% extends 'app_administrador/templates/base.html' %}
{% load staticfiles %}

{% block content %}


    <!-- Member Entries -->


    {% for nana in nanas %}


        <!-- Single Member -->
        <div class="member-entry">


            <a href="extra-timeline.html" class="member-img">

                <i class="entypo-forward"></i>
            </a>

            <div class="member-details">

                <a href="{% url 'app-administrador:nana' nana.id %}">

                <h4>
                    <p href="extra-timeline.html">{{ nana.nombre }} {{ nana.apellido_paterno }} {{ nana.apellido_materno }}</p>
                    {% if nana.foto %}
                        <img src="{{ nana.foto.url }}" class="img-rounded" width="160px"/>
                    {% endif %}
                </h4>

                <!-- Details with Icons -->
                <div class="row info-list">

                    <div class="col-sm-4">
                        <i class="entypo-briefcase"></i>
                        <a href={{ nana.antecedentes_policiales }}>Antecedentes policiales</a>
                    </div>

                    <div class="col-sm-4">
                        <i class="entypo-twitter"></i>
                        <a href="#">@johnnie</a>
                    </div>

                    <div class="col-sm-4">
                        <i class="entypo-facebook"></i>
                        <a href="#">fb.me/johnnie</a>
                    </div>

                    <div class="clear"></div>

                    <div class="col-sm-4">
                        <i class="entypo-location"></i>
                        <a href="#">{{ nana.direccion }}</a>
                    </div>

                    <div class="col-sm-4">
                        <i class="entypo-mail"></i>
                        <a href="#">{{ nana.correo }}</a>
                    </div>

                    <div class="col-sm-4">
                        <i class="entypo-linkedin"></i>
                        <a href="#">johnkennedy</a>
                    </div>

                </div>
              </a>

            </div>

        </div>

    {% endfor %}

{% endblock %}

娜娜的详细信息页面

我尝试显示点击的娜娜的详细信息页面:

class NanasValidarReferenciasView(View):
    def get(self, request, nana_id):
        # nana_id_is = nana_id
        nana = Nana.objects.get(id=nana_id)
        context = {'nana': nana}
        return render(request, 'app_administrador/validar-referencias-nana.html', context)

这是网址:

url(r'^nana', views.NanasValidarReferenciasView.as_view(), name='nana'),

2 个答案:

答案 0 :(得分:2)

你看到你的href看起来像这样:<a href="{% url 'app-administrador:nana' nana.id %}">这完全没问题。这意味着url链接将两个字符串一起添加到一个地址中。我不确切知道你的网址是如何设置的,所以它看起来像这样:

root_url/2

其中root_url是你拥有的,2是nana.id。要将其传递给url-view,它需要接受任何整数变量。像这样:

<强> urls.py

 url(r'^nana/(?P<nana_id>\d+)/$', views.nanas_specific, name='nana'),

P代表参数,如果你想查看它,它使用正则表达式逻辑。

然后在您的视图中,您可以准备好接受参数的函数:

<强> views.py

def nanas_specific(request, nana_id):

其中nana_id包含urls解析的结果。

答案 1 :(得分:1)

我主要使用基于函数的视图,但我假设相同的逻辑适用于基于类的视图。 id不是URL的一部分,因此不会传递。将网址更改为

url(r'^nana/(?P<nana_id>\d+)/$', views.NanasValidarReferenciasView.as_view(), name='nana'),