Adding Articles

Kategori: Python / Django , 25 Eylül 2019 , JanFranco


Oluşturduğumuz blog projesine yazı ekleyebilmek için articles klasöründe forms.py dosyası oluşturalım. Form olarak daha önce oluşturduğumuz bir modeli alabiliriz. Burada Article modelini alacağız. Dosyanın içeriğini şu şekilde düzenleyelim:


from django import forms
from .models import Article

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ["title", "content"]
article klasöründeki urls.py dosyasını açalım ve aşağıdaki path'i ekleyelim:


path('addarticle/', views.addarticle, name = "addarticle"),
views.py dosyasını açalım ve addarticle adında bir fonksiyon yazalım:


def addarticle(request):
    form = forms.ArticleForm(request.POST or None)

    context = {
        "form": form
    }

    if form.is_valid():
        article = form.save(commit=False)
        article.author = request.user
        article.save()

        messages.success(request, "Yazı kaydedildi!")
        return redirect("/articles/dashboard")

    return render(request, "addarticle.html", context)
form.save() methodu bir obje oluşturur. Burada bu obje ArticleForm objesidir. Daha sonra bunu veritabanına kaydeder. Biz bu objeyi article değişkenine atarsak ve parametre olarak commit=False dersek, bu method çalıştığında oluşan objeyi article tutacaktır ve kayıt etme işlemi yapılmayacaktır. Daha sonra article.author diyerek yazarı tanımlarız ve daha sonra save ederiz. Son olarak addarticle.html adında bir dosya oluşturuyoruz ve içeriğini şu şekilde ayarlıyoruz:



{% block body %}
{% load crispy_forms_tags %}
    <div class="row">
        <div class="col-md-6 offset-md-3">
            <h3>Yazı Ekle</h3>
            <hr>
            <form method="post">
                {% csrf_token %}
                {{form|crispy}}
                <br>
                <button type="submit" class="btn btn-danger">Yazı Ekle</button>
            </form>
        </div>
    </div>
{% endblock body %}


Sonraki Yazı: Articles in Dashboard
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın