ゆる~くだらだら

日常の思ったことをてきと~に書くブログ

Python初心者がDjangoGirlsでアプリを作る日記〜その2〜

f:id:hiropones:20190824224526j:plain



はい、ど〜も〜。



今回も前回に引き続きアプリを作っていきたいと思いまつ。参考サイト。
https://tutorial.djangogirls.org


前回書いてなかったんですが、macで作ってるんでウィンドウズの人は脳内でウィンドウズに変換してお読みください。


・デプロイ!

今回はいうてアプリを作ることだけが目的なんで、使いません。Railsチュートリアルの時に1章のGit&Herokuで死にそうになったんで、やはり避けていきます。


・URLを設定するぉ☆

http://127.0.0.1:8000/

を入り口ページにして、設定を書いていくよう。



[mysite/urls.py]

 path('', include('blog.urls')), ←urlpatterns内に記述。

これで入り口ページに来たリクエストはblog.urlsへリダイレクトされるようになりました。

そして、blogディレクトリの下に「urls.py」を作成。いろいろ設定を書くんですが・・・・。ここで思ったことは、なんかRailsの方が簡単だったような?ってこと。気のせいか?


・ビューの作成

blog/views.pyに書くことになります。で、この辺の説明がわかりにくいんで、もうコードその通りに書いて動けばいいや☆って気になりました。そんで、ビューを作って満を辞してページを開くとこちらが表示されます。



f:id:hiropones:20190824231629p:plain

エラー発生!!!萎えるぅぅ〜!!




説明には「大丈夫。まだ慌てる時間じゃ無い」的なことが書かれてますが、わざとエラーを表示させるなんて、なかなかの意地悪サイトです。



・・・・おいおい。




・・そんなことされたら・・・・・。






f:id:hiropones:20190824231933p:plain


・HTMLにゅーもん

ここでちょっと不思議?な箇所が登場します。
blog/templates/blogと、blogディレクトリの中にまたblogディレクトリを作るというもの。しかも、詳しい説明もありません。




・・・おいおいおい。そんなに焦らさないでくれよ。



・・・ああ。






f:id:hiropones:20190824232926p:plain


で、その下に「post_list.html」を作って、その中に表示する内容を書いていきます。ここで、参考に書いてあったHTMLで私が忘れていたものをピックアップします。

<em></em>で文章を強調する。
<strong></strong>でさらに強調する。
<br>で改行。
<a href="url">リンク</a>でリンクを生成。

んで、この時点でブラウザを開くとこうなります。



f:id:hiropones:20190824234000p:plain
サイトっぽくなってきましたね〜。

・クエリセットの使い方

クエリセットを使うと、データベースのデータを読み込んだり、並べ替えたりできるそうです。以下コマンドで実行できます。

$ python manage.py shell

んで、全てのオブジェクトを見ます。

>>> Post.objects.all()

ところが、この時点でやってもエラーになります。どうやら、ポストをインポートする必要があるそうです。というわけで、以下コマンド。

>>> from blog.models import Post

一度エラーを発生させて不安にさせ、すぐに解決させることで安心させる。・・・・全く、本当にあなたは・・・・・・





f:id:hiropones:20190826144257p:plain

で、データベースに新しいPostを作ります。Userモデルを先にインポート。

>>> from django.contrib.auth.models import User
>>> User.objects.all()

このコマンドで自分が作ったスーパーユーザー名(なんちゅー名前や)が表示されます。

>>> me = User.objects.get(username='自分の名前')
>>> Post.objects.create(author=me, title='Sample title', text='Test')

これで新しいポストが増えました。

ポストを公開するには以下コマンドを打ち込みます。

>>> post = Post.objects.get(title="Sample title")
>>> post.publish()
>>>exit()

これでプロントを閉じます。


・まとめ
あいや、疲れる。