2016-07-07 96 views
0

所以我有一個基本的Django網站設置,顯示來自數據庫的動態信息。如何在將數據庫信息顯示在Django模板中之前處理數據庫信息?

我希望能夠處理來自數據庫的文本,所以我可以創建BBCode解析器或任何我想要的東西。我對Django來說很新,所以我有點困惑,應該在哪裏完成。

這些都是我的文件至今...

Models.py

from django.db import models 

class Post(models.Model): 
    title = models.CharField(max_length=140) 
    body = models.TextField() 
    date = models.DateTimeField() 

    def __str__(self): 
     return self.title 

Urls.py

from django.conf.urls import url, include 
from django.views.generic import ListView, DetailView 
from forum.models import Post 

urlpatterns = [ 
    url(r'^$', ListView.as_view(queryset=Post.objects.all().order_by("-date")[:25], template_name="forum/forum.html")), 
    url(r'^(?P<pk>\d+)$', DetailView.as_view(model = Post, template_name = 'forum/post.html')), 
] 

Forum.html

{% extends "layout.html" %} 

{% block body %} 
    {% for post in object_list %} 
     <p>{{ post.date|date:"Y-m-d" }}<a href="/forum/{{post.id}}"> {{ post.title }}</a></p> 
    {% endfor %} 
{% endblock %} 

Functions.py

def bbcode(data): 
    data2 = data + "some random text" 

    return data2 

所有這些文件都位於根目錄項目文件夾「coolsite」中的「論壇」目錄內。

所以我的理解是,我需要在某處導入functions.py,並使用bbcode()方法來處理從數據庫中拉出的文本。這樣一旦在「forum.html」模板上顯示,它就被解析了。

對不起,如果這是一個重複的問題。我四處搜尋,無法完全找到我正在尋找的東西。

我應該怎麼做呢?

+0

類型的一個廣泛的問題,但它應該在視圖中完成。 – Sayse

回答

2

您需要覆蓋ListView方法。您將需要做在你的代碼的一些變化:

  • 設置自定義視圖,以您的網址配置

urls.py

from django.conf.urls import url, include 
from django.views.generic import ListView, DetailView 
from forum.models import Post 
from forum.views import PostList 

urlpatterns = [ 
    url(r'^$', PostList.as_view(), name='post_list'), 
    url(r'^(?P<pk>\d+)$', DetailView.as_view(model = Post, template_name = 'forum/post.html')), 
] 
  • 創建自定義視圖您基於ListView的應用(forum.views)

    # views.py 
    
    from django.views.generic import ListView 
    from forum.models import Post 
    
    
    class PostList(ListView): 
    
    model = Post 
    template_name = "forum/forum.html" 
    
    # here is where magic happens 
    def get_context_data(self, *args, **kwargs): 
        context = super(PostList, self).get_context_data(*args, **kwargs) 
        # context has the same context that you get in your template before 
        # so you can take data and work with it before return it to template 
        return context 
    

你可以找到文檔Class-Based Views here

+0

你救了我的一天,隊友! – oskarko

相關問題