存储在Django站点的数据库中的URL

时间:2009-10-13 21:43:48

标签: python database django url content-management-system

我已经制作了一些Django网站,但到目前为止我一直在urls.py中映射各个视图和网址。

现在我尝试创建一个小型自定义CMS,但我遇到了网址问题。我有一个数据库表(SQLite3),其中包含页面的代​​码,如标题列,一个用于右侧菜单,一个用于内容....依此类推。我还有一个URL列。如何让Django从列中存储的URL调用数据库表中的信息,而不必编写每个页面的视图和URL(这显然违背了CMS的目的)?

如果有人可以指出我在文档的正确部分或解释这一点的网站,那将会有很大帮助。

谢谢大家。

2 个答案:

答案 0 :(得分:5)

你不必在平面网上

对于那些应该可寻址的模型,我这样做:

在urls.py中,我有一个像

这样的网址映射
  url(r'(?P<slug>[a-z1-3_]{1,})/$','cms.views.category_view', name="category-view")

在这种情况下,正则表达式(?P<slug>[a-z1-3_]{1,})将返回一个名为slug的变量并将其发送到我的视图cms.views.category_view。在那个视图中,我这样查询:

@render_to('category.html')
def category_view(request, slug):
    return {'cat':Category.objects.get(slug=slug)}

(注意:我使用的是annoying-decorator render_to - 它与render_to_response相同,只是更短)

修改 tutorial应涵盖此内容。在这里,您可以在每个细节中找到url-configuration and dispatching。 djangobook也涵盖了它。并检查pythons regex模块。

当然你可以使用这段代码。

答案 1 :(得分:1)

你的问题有点扭曲,但我认为你所要求的是类似于django.contrib.flatpages如何处理这个问题。基本上它使用中间件来捕获404错误,然后查看是否有任何flatpages有一个匹配的URL字段。

我们在一个网站上完成了这项工作,其中所有网址都是“搜索引擎友好”。我们覆盖了save()方法,将标题导入this_is_the_title.html(或其他),然后将其存储在一个具有URL =&gt;的单独表中。 object class / id mapping.ng(这意味着它在中间件列表中的flatpages之前列出)。