ホームページ  >  記事  >  バックエンド開発  >  Python は Django を使用して独自のブログ システムを開発します

Python は Django を使用して独自のブログ システムを開発します

高洛峰
高洛峰オリジナル
2017-02-25 11:17:142055ブラウズ

ずっと自分でブログシステムを構築したいと思っていたのですが、ネットで調べてみるとNode.jsの知識が必要なようで、ライブラリもたくさんインストールする必要があるのでやりたくありません。触って。しかし、Django のような成果物に遭遇し、私のブログ システムがこのように確立されるとは予想していませんでした。もっともベーシックなタイプですが。ただし、このブログは Django をある程度理解している子供に適しています。初心者の場合は、実験を行う前に Django の基本的な知識を確認することをお勧めします。もっと効率的な!

それでは、早速始めましょう。

フレームワークを構築する
•プロジェクトとアプリケーションを作成する

フレームワークを構築するとは、Django をインストールし、関連する構成を行うことを意味します。 PyCharm で作成したため、ツールが多くのことを行ってくれました。ただし、最下層は次のコード行にすぎません:

MyDjango という名前の Django プロジェクトを作成します

django-admin startproject MyDjango

MyBlog という名前の Django アプリケーションを作成します。ここで、アプリケーションはプロジェクトのサブセットに属していることに注意してください。平たく言えば、アプリケーション フォルダーはプロジェクト フォルダーのサブセットとして存在します。

django-admin startapp MyBlog

•データベースと基礎となるモデルを作成します

もちろん、自分でカスタマイズすることもできます。つまり、sqlite3 は必要なデータベースのニーズを満たすことができます。 settings.py でこのように設定できます。

# Database
# https://docs.djangoproject.com/en/1.9/ref/settings/#databases
DATABASES = {
 'default': {
  'ENGINE': 'django.db.backends.sqlite3',
  'NAME': 'MyBlog.db',
  'USER':'',
  'PASSWORD':'',
  'HOST':'',
  'PORT':'',
 }
}

データベースが構築されたら、次のステップはモデルを作成することです。ブログ システムを作成しているので、ブログに関するコンテンツを公開することが不可欠なので、models.py ファイル

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class BlogPost(models.Model):
 title = models.CharField(max_length=150)
 body = models.TextField()
 timestamp = models.DateTimeField()

 def __unicode__(self):
  return self.title


などの詳細情報が必要です。

管理者は公開されたブログを管理する必要があるため、公開されたブログの管理モデルをセットアップする必要があります。

# set the admin page for BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)


そのため、models.py ファイル全体は次のようになります。

from __future__ import unicode_literals
from django.contrib import admin
from django.db import models


# create the blog model

class BlogPost(models.Model):
 title = models.CharField(max_length=150)
 body = models.TextField()
 timestamp = models.DateTimeField()

 def __unicode__(self):
  return self.title



# set the admin page for BlogPost

class BlogPostAdmin(admin.ModelAdmin):
 list_display = ('title','timestamp')


# register the model (especially important

admin.site.register(BlogPost)

次のステップは、データベースとモデル間の接続を同期することです。同期操作を実行しない場合、
django.db.utils.OperationalError:Cannot open Database file
が報告される可能性が高く、これも非常に重要なリンクです。これは、私が以前に遭遇した Django バージョンの問題です。

django python manage.py syncdb

django > 1.7: python manage.py makemigrations
python manage.py merge

完璧な MVC モデル

実際、前のステップに関する限り、モデル モジュールの機能はすでに完了しています。次のステップはビューをマップすることです。


•V (views.py) ビューレイヤー

このファイルで基礎となるロジック処理を定義する必要があります。これにより、ユーザーにどのような応答が返されるかが決まります。どのレンダリング方法を使用するかについては、不必要な時間を無駄にしないでください。 render_to_response で十分です。


# create the view for blog show

def myBlogs(request):
 blog_list = BlogPost.objects.all()
 return render_to_response('BlogTemplate.html',{'blog_list':blog_list})

ここではテンプレート ファイルが使用され、リスト タイプのパラメーターがテンプレートに渡されます。これについては後で説明します。

•C(コントローラー)urls.py

このファイルは、Django のさまざまな部分の疎結合された機能を結合し、プロジェクト全体の動作の非コアを完成すると言えます。論理処理をマッピングする方法についてです。次にブログシステムをセットアップします。

from django.conf.urls import url
from django.contrib import admin
from MyBlog.views import *

urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^myBlogs/$',myBlogs),
]

マッピングの方法については、前回の記事で詳しく紹介しており、PyCharmはDjangoの基本構成を開発します。興味のある方は参考にしてみてください。さて、今回は admin 管理者ユーザーの設定が完了したら、プログラムを実行できるようになります。

python manage.py runserver

が表示されます:

Performing system checks...

System check identified no issues (0 silenced).
June 05, 2016 - 11:39:27
Django version 1.9.6, using settings 'MyDjango.settings'
Starting development server at http://www.php.cn/:8000/
Quit the server with CTRL-BREAK.

ログインに成功したら、ブラウザに

http://127.0.0.1:8000/admin と入力できるようになり、[編集済み] の下にある [ブログ投稿] をクリックできます。ブログ投稿。次に、「保存」ボタンをクリックしてブログを公開します。次に、ブラウザに
http://127.0.0.1:8000/myBlogs/ と入力して、ブログ システムにアクセスします。

これでブログシステムの構築が完了しました。ただし、スタイルを追加しないと見栄えが悪いので、次のテンプレート スタイルを追加します。

テンプレート構成

接着刚才的继续,关于模板,这里面可谓是有着很深的设计哲学。了解过的大家肯定都会有感触,我就不多说了。
接下来就为我们的博客系统设置一下模板吧。
 •父模板base.html
按照django对模板的继承设置,我们可以制作一个父模板。如下:

<!DOCTYPE html>
<html lang="zh">
<head>
 <meta charset="UTF-8">
 <title>标题</title>
</head>
<style type="text/css">
 body{
  color: #efd;
  background: #BBBBBB;
  padding: 12px 5em;
  margin:7px;
 }
 h1{
  padding: 2em;
  background: #675;
 }
 h2{
  color: #85F2F2;
  border-top: 1px dotted #fff;
  margin-top:2em;
 }
 p{
  margin:1em 0;
 }
</style>
<body>
<h1>XX博文</h1>
<h3>小生不才,但求简约!</h3>
{% block content %}
{% endblock %}
</body>
</html>

•然后就是子模板BlogTemplate.html

{% extends "base.html" %}
 {% block content %}
  {% for post in blog_list %}
   <h2>{{ post.title }}</h2>
   <p>{{ post.timestamp }}</p>
   <p>{{ post.body }}</p>
  {% endfor %}
 {% endblock %}

需要注意的就是模板中的模板标签以及模板变量都应该与views.py文件对应的函数中的字典变量相一致,否则django虽然不会报错,但也是不会显示数据的。 

接下来刷新一下,输入http://127.0.0.1:8000/admin/

点击add按钮,开始添加你的博文吧。

Python は Django を使用して独自のブログ システムを開発します

Python は Django を使用して独自のブログ システムを開発します

然后在浏览器中输入
http://www.php.cn/:8000/myBlogs/.你就可以看到你的博客列表了,如图

Python は Django を使用して独自のブログ システムを開発します

大家可能已经看到了,问题就出在点击标题没有进入到相关的详情页面,那是因为还没有添加这个功能呢。(^__^) 嘻嘻……

总结

今天一起做了一个简单的博客系统,虽然外观看起来并不是很好看,但是内容什么的差不多就是这样了。还有很多的地方需要完善。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多Python は Django を使用して独自のブログ システムを開発します相关文章请关注PHP中文网!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。