ランダムおすすめ記事

ホームページ作りました

2019 J1第5節 湘南ベルマーレ対清水エスパルス 積み上げてきたもの。俺たちは、J1じゃ勝てないクラブなんかじゃない!

綺麗な桜が咲く中3.31。

IAIスタジアムに湘南ベルマーレ対清水エスパルスの試合を見に行ってきました。

 

続きを読む

python,django。関数でフォームを出力する。

今回は関数。 つまりpythonですと

def():
 フォームを作りたいよ~~~。

という形でフォームを作る方法を書こうと思います。 下の記事でclassを使った方法はすでに記載しました。 https://qiita.com/sr2460/items/a22770f357d8a24403ab



models.py、forms.py、htmlの書き方は上の記事を見てもらうとして、classですとこんな風に書いてフォームを作成していました。

class クラス名(CreateView):
    model = Post
    form_class = PostForm
    template_name = "使用したいテンプレート名"
    success_url = "リダイレクトするURL"  


これを関数で書くと、

from django.shortcuts import render, redirect

def form(request):
    form = PostForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        form.save()
        return redirect(アプリケーション名:リダイレクトしたいurlのname)


    context = {
        'form' :form
    }
return render(request, 'アプリケーション名'/テンプレート名.html', context)


切り取ってみていきましょう。

POSTでurlにアクセスされた場合(フォームは送信された場合)PostFormにrequest(入力内容)が送信されるよ。 POSTじゃない場合はNone(フォーム内は空でhtmlに出力されるよ)というニュアンスです。(なんかうまく説明できない)

   form = PostForm(request.POST or None)


もしrequestがPostならバリデーションをして(想定されていない型で送信された場合弾いてくれます)、form.save()で入力内容が保存されます。

    if request.method == 'POST' and form.is_valid():
        form.save()


フォームを送信した後に飛ぶurlの設定。

return redirect(アプリケーション名:リダイレクトしたいurlのname)


フォームを使用するhtmlをrenderで指定してcontectリストを使ってformの情報をhtmlで使えるようにします。

    context = {
        'form' :form
    }
return render(request, 'アプリケーション名'/テンプレート名.html', context)


これで関数部分の話は終わり!


クラスの場合urls.pyは

path('使いたいURL', views.クラス名.asview(),name='使いたい名前'),

ですが関数の場合は

path('使いたいURL', views.関数名,name='使いたい名前'),

という風に書きます。views.クラス名.asview()とviews.関数名という違いがありますね。 今回はこれで終わり。

python,djangoでフォームとリストを同時に出力したい。

python,djangoでフォームとリストを同時に出力したい。 えっ?そんなこと簡単なんじゃないのと思われるかもしれませんがちょっとコツが要ります。 まずなんで同時に出力できないの?ということを説明しますね。 urls.pyを見てみましょう。

続きを読む

python,djangoでモデルからフォームを簡単に作る

    #!/usr/bin/env python
# -*- coding: utf-8 -*-

from django.db import models
from django.utils import timezone

class Post(models.Model):
    class Meta:
        verbose_name = '投稿'
        verbose_name_plural = '投稿リスト'

    name = models.CharField('名前', max_length=20, default='ベルマーレ大好き')
    text = models.TextField('本文')
    date = models.DateTimeField('日付', default=timezone.now)
    file = models.FileField('ファイル', null=True,blank=True)
    good = models.IntegerField(default=0)

    def __str__(self):
        return self.text


続きを読む

djangoの関数でデータを格納するcontext辞書はbottleではどう設定する?

def vote(request, question_id):
    form = ChoiceCommentForm(request.POST or None)
    question = get_object_or_404(Question, pk=question_id)


    if request.method == 'POST':
        if form.is_valid():
            selected_choice= question.choice_set.get(pk=request.POST['choice'])
            selected_choice.votes += 1
            selected_choice.save()
            choice_comment = form.save(commit=False)  
            choice_comment.question = question
            choice_comment.save() 
            return redirect('polls:results', pk=question_id)

        context = {
            'question': question,
            'form': form,
            'error_message': "投票内容を選んでください",
        }
        return render(request, 'polls/detail.html', context)

続きを読む

python、djangoのurls.pyで設定するnameってなんやねん??

python、djangoのurls.pyで設定するnameってなんやねん?? ということをdjangoをやりはじめた当初はよく分かっていませんでした。 いまでも怪しいのでまとめてみましょう。

djangoをにはurls.py(djangoはurls.pyが2つ存在するのですが、アプリケーションの中にあるurls.pyのことです)にnameと書くことがあります。

続きを読む

pythonフレームワークのdjangoとbottleでHello World!するまでの流れをまとめてみよう

少し今まで学んだことの復習をしたいです。 今回はdjangoとbottleでのHello World!までの流れを復習します。

pythonフレームワークのdjangoでHello World!するまでの流れをまとめてみよう ]

djangoはコマンドプロンプトからテンプレートを作成することができます。
コマンドは

py -m django startproject 任意の名前 

これでテンプレートをダウンロードできます。

 tree ディレクトリ名 /f

コマンドでディレクトリ構成を確認。

│  manage.py
│
└─djangotest
        settings.py
        urls.py
        wsgi.py
        __init__.py
続きを読む