2016-07-07 36 views
0

데이터베이스의 동적 정보를 표시하는 기본 Django 웹 사이트 설정이 있습니다.Django 템플릿에 데이터베이스 정보를 표시하기 전에 데이터베이스 정보를 조작하는 방법은 무엇입니까?

데이터베이스에서 나오는 텍스트를 조작하여 BBCode 파서 또는 내가 원하는 다른 것을 만들 수 있기를 바랍니다. 나는 꽤 장고에 익숙하지 않아서이 일을 어디에서해야하는지 혼란 스럽다.

이 내 파일은 ... 지금까지 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"루트 프로젝트 폴더에있는 "forum"디렉토리 내에 있습니다.

그래서 나는 어딘가에 functions.py를 가져와 bbcode() 메서드를 사용하여 데이터베이스에서 가져온 텍스트를 조작해야한다고 생각합니다. 그런 식으로 "forum.html"템플릿에 한 번 표시됩니다.

중복 된 질문 인 경우 죄송합니다. 나는 주변을 수색했고, 내가 찾고 있었던 것을 발견 할 수 없었다.

정확히 어떻게해야합니까?

+0

종류의 문서를 찾을 수 있지만 뷰에서 수행해야합니다. – Sayse

답변

2

ListView 메서드를 재정의해야합니다. 당신은 당신의 코드에 약간 수정을 수행해야합니다

  • 당신의 URL 설정에 사용자 정의보기를 설정

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 기반의 app (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