Ev Arşiv Hakkında

Django ile Wordpress'e bağlanmak

28-8-2010, 5:23 ö.s. // yorumlar // python , django , wordpress // 1675

Birkaç gün önce bir arkadaş sormuştu Django ile Wordpress'e nasıl bağlandığımı(bkz arşiv sayfam. Yaptığım şey, wordpress için bir model oluşturup, mümkün olduğunca wordpress veritabanını kopyaladım.

Kendi sitem için sadece wp_posts tablosunu aktardım, fakat tüm wordpress'de aktarılabilir biraz daha uğraşılarak. Bu yöntemle wordpress'e yazı bile girebilirsiniz aslında. Ben sadece yazıları çekiyorum.

wp_posts tablosu(wordpress 2.9.1 için) şu alanları içeriyor:

field           type
----------------------------
id              int(11)
post_date       datetime
post_title      varchar(100)
post_content    longtext
post_excerpt    varchar(100)
post_status     varchar(100)
guid            varchar(100)
comment_count   int(11)
post_type       varchar(20)

Bunu Django ORM'ine şu şekilde çevirdim(tam olarak aynısı olmasa da, eğer sadece yazıları okuyacaksanız gayet güzel çalışıyor, yazı eklemek için denemedim):

# models.py
from django.db import models

class Posts(models.Model):
    post_date = models.DateTimeField()
    post_content = models.TextField()
    post_title = models.CharField(max_length=100)
    post_content = models.TextField()
    post_excerpt = models.CharField(max_length=100)
    post_status = models.CharField(max_length=20)
    guid = models.CharField(max_length=100)
    comment_count = models.IntegerField()
    post_type = models.CharField(max_length=20)

Daha sonra views.py dosyamdan şu şekilde çekiyorum:

from wp.models import Posts

def wp():
    return [post for post in Posts.objects.order_by("-post_date") if post.post_type == "post" and post.post_status == "publish"]

Bundan sonrası normal Django işlemleri. wp() fonksiyonunu istediğim sayfaya gönderdikten sonra(render_to_response ile mesela) aşağıdaki template kodları ile wordpress yazılarıma ait verileri çekiyorum:

{% for yazi in wp %}
        {{ yazi.post_title }} *baslik*
        {{ yazi.post_date }} *tarih*
        {{ yazi.post_content }} *icerik*
        {{ yazi.coment_count }} *yorum sayisi*
{% endfor %}

Tabii bunları çekerken bazı builtin template taglardan yararlanıyorum. Bu arada, Django, 1.2 sürümüyle beraber artık birden fazla veritabanına bağlanabiliyor, wordpress yazılarınızı çekmek istiyorsanız bunu kullanabilirsiniz(ben aynı veritabanını kullanıyorum.

blog comments powered by Disqus