一个允许根据给定的分类和.csv文件创建动态URL的应用程序

时间:2015-05-28 09:37:40

标签: python django csv django-views django-urls

欢迎。

Toodays问题很复杂,我需要建议甚至指导。因此,不要拖延太长时间,我会尝试将我的问题描述为可能的,尽可能保留尽可能多的详细信息。

我正在使用Django 1.8.1Python 2.7一些外部包。

所以,从开始。我想创建一个通用的通用服务草案,可以用于几十种不同的方式。在许多地方多次设置是其他时间的主题。所有这些混乱的想法总是一样的 - 部署实例,上传带分类法的文件,创建网址 - 魔术发生,一切正常。

说明:

用户可以上传.csv文件,其中包含几个非常重要的字段。他们应负责在我的网站上为我的演讲创建分类。 假设我需要为购物中心建立一个网站(在那个特定的时间)。我的分类法描述了django如何创建看起来像这样的网址:

gallery-name.my_website_address.com/shop/specific-product/

正如我们所看到的那样,并没有什么难以编写代码,但是当我想开始使用新的分类标准的新网站时问题就出现了,让我们说这次是为了获得律师名单,例如:它可能看起来像这样:

country.my_website_address.com/city/street/law-firm/lawyer/

我想现在你可能会开始觉得我正在接受这个想法。主要问题是如何以一种保持多功能性的方式处理它,并且在使用新的URL设置和新的URL设置部署新应用程序时更容易。如何动态创建网址,甚至可以为所有解决方案动态创建网址?如何将我新创建的网址从.csv文件连接到我的视图?

随着我在这个问题上的深入,我开始注意到一些解决方案。 我认为它可以完成。例如,当我们查看此链接时:

country.my_website_address.com/city/street/hospital/doctor

我们首先看到的是 - 子域名,它可以在django面板管理员中设置。接下来,域名,我们现在不关心,然后是子链接 - 我注意到它们可以由一个视图提供服务(除了最后一个元素)。 :/city/street/hospital/这些可以始终分组在一个位置。它们看起来总是一样,它是一张在地图上有位置的列表。

我们网址中doctorlawyerproductcar或其他内容的最后一个元素将始终以相同的方式显示。只有.csv文件提供的有关它的详细信息。我想我会尝试以一种方式对其进行编码,这样我就可以从我的文件中选择哪个项目a)子域名b)列表c)特定项目

总而言之,您是否有任何想法如何使一切工作?如何通过保持与视图的连接来创建URL,保持多功能性?

我为那些愿意分享想法的人买啤酒。

祝福!

SebastianBurzyński

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解你的问题,但我非常确定Django的URL conf可以为你解决这个问题。

在一天结束时,Django使用正则表达式比较模式:

urlpatterns = [
    url(r'shop/([0-9a-zA-Z]+)/', views.shop_view),
    url(r'([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/([0-9a-zA-Z]+)/', views.listing)
]

views.listing应该(city,street,company,occupation)作为输入参数。

编辑:很好,我想我得到了你正在寻找的东西。

with open("csv.csv","r") as fp:
    taxonomy = ['/'.join(line.split(',')) for line in fp.readlines()]
urlpatterns = [url("(" + t + ")",views.split) for t in taxonomy]

split看起来像

def split(request, string):
    taxonomy = string.split('/')

(我还没试过,但它应该有效)