Python 如何基于数据库中的列数据更改URL

Python 如何基于数据库中的列数据更改URL,python,django,django-urls,Python,Django,Django Urls,我试了很多次,但都没能找到确切的答案。 我想更改由HTML中的for循环生成的列表的URL。 以下是我在views.py文件中该视图的代码: class DashboardHomeViewClass(View): def get(self, request, *args, **kwargs): device_objects = device_user_data.objects.filter(User_Name = request.user.username)

我试了很多次,但都没能找到确切的答案。 我想更改由HTML中的for循环生成的列表的URL。 以下是我在views.py文件中该视图的代码:

class DashboardHomeViewClass(View):
    def get(self, request, *args, **kwargs):

        device_objects = device_user_data.objects.filter(User_Name = request.user.username)
        device_list = []

        for device in device_objects:
            device_list.append(device.Device_Alias_Data)

        context_logged = {'device_list': device_list}
        return render(request, "dashboardhometemplate.html", context_logged)
以下是在HTML模板中使用此上下文的代码:

{%for item in device_list%}
<li> <a  href="#" aria-expanded="false"><i class="fa fa-bar-chart"></i><span class="hide-menu">{{item}}</span></a>
{% endfor %}

首先,您应该对
url.py
文件进行一些调整,以使其正常工作:

app_name = "dashboardhome"

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^login/$', login  ,{'template_name': 'login_template.html'}),
    url(r'^dashboard/$', DashboardHomeViewClass.as_view(), name="dashboard"),
]
这里我们添加了app_name
url
方法的name属性,这样我们就可以利用Django了

之后,您可以使用模板内置标记,如下所示:

{%for item in device_list%}
<li> <a  href="{% url 'dashboardhome:dashboard' item %}" aria-expanded="false"><i class="fa fa-bar-chart"></i><span class="hide-menu">{{item}}</span></a>
{% endfor %}
http://127.0.0.1:8000/dashboard/{{item}}
确保查看链接了解更多信息


我希望这会有所帮助。

可以通过导入django.url.reverse在model.py中使用def get_absolute_url()方法
和使用url名称。

我的应用程序名是“dashboardhome”,所以我按照你说的更改了文件,但我得到了一个错误:
{%for device_list%}
  • {%endfor%}
  • ,错误是-无法解析其余部分:':item'来自“dashboardhome:item'@yusef bhOops,我错过了一些引号,
    href=“{%url'仪表板主页:仪表板'项目%}”
    。我编辑了答案。
    http://127.0.0.1:8000/dashboard/{{item}}