Obwohl es noch nicht viele Artikel auf der neuen Site gibt, werde ich einen RSS-Feed hinzufügen, da Django über integrierte Funktionen zum Organisieren von RSS-Feeds verfügt, sowohl im regulären Format als auch im Atom-Format. Aber zunächst beschränke ich mich darauf, normalerweise einen Newsfeed hinzuzufügen, der mit dem FeedBurner-Dienst verbunden werden kann und auch von einigen RSS-Readern auf der Site gefunden werden kann. Ich verwende zum Beispiel QuiteRSS , das übrigens in Qt5 geschrieben ist.
Mindestanforderungen für die Organisation eines RSS-Feeds:
- Fügen Sie einen Link zum Feed zum Textkörper Kopf - Seiten-Tag hinzu;
- Schreiben Sie eine Präsentation, die für die Vorbereitung des Bandes verantwortlich ist;
- Ändern Sie das Modell, auf dessen Grundlage der Newsfeed erstellt wird.
Hinzufügen eines Links zu einem RSS-Feed
Zuerst fügen wir im Titel der Seite einen Link zum RSS-Feed hinzu. Warum wird das benötigt? - Dies ist notwendig, damit RSS-Reader den Feed beim Crawlen der Site leicht erkennen können. Wenn Sie keinen Link angeben, muss der Benutzer manuell nach Ihrem RSS-Feed suchen.
<head> ... <link rel="home" type="application/rss+xml" href="http://example.com/feed" /> ... </head>
In diesem Fall befindet sich der RSS-Feed unter feed.
Implementieren einer Ansicht
Um die Ansicht zu implementieren, benötigen wir die Feed, Klasse, sowie den Import des Modells, auf dessen Grundlage der Newsfeed aufgebaut wird. Natürlich wird das Artikelmodell gewählt, worüber ich bereits im Artikel zu [Modell, Vorlage und Ansicht] gesprochen habe (../../../../../knowledge / django / 5 / ), die auf dieser Website verwendet werden.
from django.contrib.syndication.views import Feed from knowledge.models import * class ArticlesFeed(Feed): title = "EVILEG - Практическое программирование" description = "Последние статьи сайта EVILEG о программировании и информационных технологиях" link = "/" def items(self): return Article.objects.exclude(article_status=False).order_by('-article_date')[:10] def item_title(self, item): return item.article_title def item_description(self, item): return item.article_content[0:400] + "<p>Статья впервые появилась на <a href="\"https://evileg.com/ru\"">EVILEG " \ "- Практическое программирование</a></p>"
Um die Funktionen eines RSS-Feeds zu nutzen, müssen Sie also von der Feed-Klasse erben. Überschreiben Sie das Titelfeld, das der Name Ihres RSS-Feeds ist, überschreiben Sie das Beschreibungsfeld, das die Beschreibung Ihres RSS-Feeds ist, und geben Sie auch die Adresse des Kanals an, da dieser Kanal jedoch die Hauptseite von . ist der Site habe ich einen Schrägstrich als Link.
ACHTUNG: Wenn Sie den Link trotzdem nicht angeben, werden Fehler angezeigt und nichts funktioniert.
Die Methode items gibt die 10 neuesten Artikel zurück, mit Ausnahme der Artikel mit Entwurfsstatus.
Die Methode item \ _title ersetzt den Titel des Artikels entsprechend.
Die Methode item \ _description ersetzt die Artikelbeschreibung aus dem Feld article \ _content im Modell. In diesem Fall umfasst die Beschreibung die ersten 400 Zeichen des Artikels und eine zusätzliche Signatur mit Backlink zur Site. Ein Backlink zur Site wird erstellt, damit Nachrichtenaggregatoren, die auf Ihrer Site grasen, selbst Backlinks zu der Site hinterlassen.
Artikelmodell ändern
Der entscheidende Punkt ist, dass Sie eine get \ _absolute \ _url-Methode haben müssen, die auch von der RSS-Feed-Ansicht verwendet wird. Diese Methode gibt die absolute Adresse der Seite zurück, und ohne sie werden auch Fehler ausgegeben.
Diese Methode wurde dem Modell Artikel hinzugefügt.
def get_absolute_url(self): return reverse('knowledge:article', kwargs={'section': self.article_section.section_url, 'article_id': self.id})
Die Artikel befinden sich im Wissensmodul und sind in Abschnitte unterteilt. Daher werden zwei Variablen verwendet, um die vollständige Adresse zu bilden:
1.Abschnittsadresse
2.id des Artikels
Das URL-Muster sieht so aus:
url(r'^(?P[\w]+)/(?P<article_id>[0-9]+)/$', views.EArticleView.as_view(),
Hinzufügen einer RSS-URL-Vorlage
Und damit es funktioniert, müssen Sie nur die URL-Vorlage für den RSS hinzufügen. Ich habe diese Vorlage im home -Modul, wie der gesamte Newsfeed, mit Ausnahme des Artikelmodells. Und diese Vorlage sieht so aus.
from django.conf.urls import url from . import views urlpatterns = [ url(r'^feed/$', views.ArticlesFeed()), ]
Für Django empfehle ich Timeweb Hosting VDS Server .
Тут мне тоже есть что сказать=)
Сами разрабы советуют импортировать следующим образом:
Стоит избегать
или
в первом случае некоторым IDE срывает крышу=) (а вообще это несколько опасно, особенно в случае с джангой - можно импортнуть не то и не оттуда)
а во втором может случиться коллизия, например в двух модулях есть классы с одним и тем же именем (ну мало ли). и вот не угадаешь, какой будет в итоге=)
Явное лучше неявного=)
Что интересно, если написать так
,то PyCharm сносит крышу, если разрабатываешь в рамках проекта приложение, которое подготавливается в качестве самостоятельного приложения, которое в дальнейшем можно будет устанавливать через pip . То есть если оно имеет структуру гит репозитория, как, например, evileg_core
PyCharm вообще не понимает, что происходит.
приходится писать так