• 06-06-2020, 22:39:17
    #1
    Merhabalar,

    Bir konuda yardımlarınızı ücretli ya da ücretsiz rica edeceğim.

    Bir django websitem var. Sitemap yaptım çalışıyor.

    Fakat I18N aktif ettiğimde / sitede 4 dil varsa sitemap içine her posttan 4 tane sonuç çıkartıyor. şöyle :

    <url>
    <loc>http://127.0.0.1:8000/en/post/vote/my_sample_post_english</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    <url>
    <loc>http://127.0.0.1:8000/en/post/vote/my_sample_post_turkish</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    <url>
    <loc>http://127.0.0.1:8000/en/post/vote/my_sample_post_french</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    ama ben şu şekilde gelmesini istiyorum

    <url>
    <loc>http://127.0.0.1:8000/en/post/vote/my_sample_post_english</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    <url>
    <loc>http://127.0.0.1:8000/tr/post/vote/my_sample_post_turkish</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    <url>
    <loc>http://127.0.0.1:8000/fr/post/vote/my_sample_post_french</loc>
    <lastmod>2020-05-19</lastmod>
    <priority>0.5</priority>
    </url>

    ya da başka bir şekilde filtrelemek. sitemap.py de şöyle bir kod kullanıyorum;

    def items(self):
    post= Post.objects.filter(private=False, language="en")
    return post

    şimdi language en olarak filtrelersem sadece en olan içerikler geliyor. ama bende 4 dil var. bunu nasıl diğer dilleri de ekleyerek filtreleyebilirim.
    Post.objects.filter(private=False, language="buraya otomatik olarak postun dilini nasıl çekerim ve sonra bir for döngüsüyle onu ekrana basarım?")

    models.py içinde dil kısmı language olarak geçiyor
    kayıtlar db ye en-tr-fr olaran kaydediliyor.

    umarım anlaşılır olmuştur
    şimdiden teşekkürler
  • 07-06-2020, 19:01:44
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    selamlar yanlis bilmiyorsam sistem dilini browser header ile iletiyor zaten ve django tarafinda soyle bir kod parcasi ile istekteki dili elde edebiliyorsunuz;
    from django.utils import translation
    translation.get_language_from_request(request)
    isinizi gorur diye umuyorum, iyi calismalar.
  • 08-06-2020, 23:25:52
    #3
    ibrahimmdogann adlı üyeden alıntı: mesajı görüntüle
    selamlar yanlis bilmiyorsam sistem dilini browser header ile iletiyor zaten ve django tarafinda soyle bir kod parcasi ile istekteki dili elde edebiliyorsunuz;
    from django.utils import translation
    translation.get_language_from_request(request)
    isinizi gorur diye umuyorum, iyi calismalar.
    hocam cevap için çok teşekkürler, aslında bu işimi görmüyor. benim db'deki language bölümünü şu kısımda okutmam gerekiyor;

    post= Post.objects.filter(private=False, language="burada")

    yani ben site/en/ kısmına gittiğimde db içinde en olan postlar filtrelenecek bu şekilde... site/tr/ kısmına gittiğimde de db içindeki tr olanlar filtrelenecek gibi...