August 28, 2010 - Tagged as: python, django, tr.
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):
= models.DateTimeField()
post_date = models.TextField()
post_content = models.CharField(max_length=100)
post_title = models.TextField()
post_content = models.CharField(max_length=100)
post_excerpt = models.CharField(max_length=20)
post_status = models.CharField(max_length=100)
guid = models.IntegerField()
comment_count = models.CharField(max_length=20) post_type
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 %}
{*baslik*
{{ yazi.post_title }} *tarih*
{{ yazi.post_date }} *icerik*
{{ yazi.post_content }} *yorum sayisi*
{{ yazi.coment_count }} % 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.