🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

6842閲覧

【Django3】{{ form.as_p }}の部分のレイアウトをきれいにしたい。

退会済みユーザー

退会済みユーザー

総合スコア0

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2021/03/09 05:31

編集2021/03/09 08:02

こんにちは。
Djangoの新規登録画面のレイアウトをきれいにしたいのですが、
どのように修正すればいいのかわからないので、お力をお借りしたく、質問させていただきます。

前提・実現したいこと

{{ form.as_p }}

にて記述している社員のID管理画面のレイアウトをきれいにしたい。
理想

発生している問題・エラーメッセージ

現状は以下のような状態です。
現状

→回答内容反映後
イメージ説明

該当のソースコード

(bootstrapも利用しています。)
manage_pj\manager\templates\manager\employee_inf_form.html
manager・・・アプリ名

Python

1{% extends 'manager/base.html' %} 2 3{% block main %} 4 5 <h1>新規作成</h1> 6 <form method="post"> 7 {% csrf_token %} 8 {{ form.as_p }} 9 <button type="submit" class="btn btn-primary">登録</button> 10 </form> 11 12{% endblock main %}

→回答内容反映後

Python

1{% extends 'manager/base.html' %} 2{% load bootstrap4 %} 3 4{% block main %} 5 6 <h1>新規作成</h1> 7 <form method="post"> 8 {% csrf_token %} 9 {% bootstrap_form form layout="horizontal" %} # 編集 10 <button type="submit" class="btn btn-primary">登録</button> 11 </form> 12 13{% endblock main %}

models.py

from django.db import models from django.urls import reverse class Employee_inf(models.Model): no = models.CharField( max_length=4, primary_key=True, verbose_name="社員番号", ) name = models.CharField( max_length=10, verbose_name="名前", ) kana = models.CharField( max_length=15, verbose_name="かな", ) b_day = models.DateField( auto_now=False, auto_now_add=False, verbose_name="誕生日", ) tel = models.CharField( max_length=50, verbose_name="電話番号", ) a_id = models.EmailField( max_length=64, verbose_name="Apple ID", ) a_pass = models.CharField( max_length=10, verbose_name="パスワード", ) remarks = models.TextField( max_length=250, blank=True, null=True, verbose_name="備考", ) def get_absolute_url(self): return reverse("detail", args={self.pk}) def __str__(self): return self.name class Meta: verbose_name_plural = "社員情報"

試したこと

HTMLなどでclassをつけようにもどうつけていいかわからず、
手が出せておりません。

→回答後、参照
参照箇所

補足情報(FW/ツールのバージョンなど)

Django 3.1.7
Python 3.9.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

実装手順のまとめを記載。
【流れ】
1.django-bootstrapを導入
2.枠などはしっかりできたが、見た目部分で、枠とタイトルとが離れている部分を
CSSで修正

【手順】

  1. Bootstrapをインストール
pip install django-bootstrap4

2.settings.pyへBootstrapの記述を行う

python

1INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 "manager", 9 "bootstrap4", # ここを追記 10]

3.新規作成のhtmlを修正する。

<h1>新規作成</h1> <form method="post"> {% csrf_token %} {% bootstrap_form form layout="horizontal" %} # ここを修正 <button type="submit" class="btn btn-primary">登録</button> </form>

ここまでできて、「発生している問題・エラーメッセージ」の回答反映後のように、
テキスト入力エリア(枠)とタイトルが不自然に離れていたので、CSSで修正。

4.CSSで整える
イメージ説明
赤枠の部分をCSSファイルに記述

css

1.col-md-3.col-form-label{ 2 text-align:center; 3}

以上で見た目も整いました。

投稿2021/03/10 01:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

bootstrapを使用しているのでしたら、django-bootstrap4を利用するのはいかがでしょうか。

投稿2021/03/09 05:47

hasami

総合スコア1277

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/03/09 07:56

早速のご返答ありがとうございます。 導入してみたら、フォーマットが変えれました! ありがとうございます。 もしよろしければ導入について、二点ほどお聞きしたい内容があります。 こちらのご回答もお願いしてもよろしいでしょうか? 1.layoutを指定できると思うのですが、こちら種類はどこに載っていますか?調べてみたのですが、見つけられませんでした。 2.タイトルと枠とが間が空いてしまいました。こちらの詰め方などあれば教えていただけないでしょうか? 記述したコード <form method="post"> {% csrf_token %} {% bootstrap_form form layout="horizontal" %} <button type="submit" class="btn btn-primary">登録</button> </form>
hasami

2021/03/09 08:54

1. layoutについて 調べたところhorizontalとinlineのみのようですね。 bootstrap_formタグではなく、bootstrap_fieldタグを使用するので把握していません。 2. タイトルと枠 タイトルと枠が何を示すか理解できていませんが、これらはCSSで設定する必要があると思います。フォームのレイアウトをコントロールしたいのであれば、bootstrap_fieldタグなどを使用することをお勧めします。
退会済みユーザー

退会済みユーザー

2021/03/10 00:46

ご返答が遅くなってしまい申し訳ございません。 アラートがされず遅くなってしまいました。 1.layoutの件について お調べしていただき、ありがとうございます。 まだまだ探し方が甘いようで申し訳ございません。 また、申し訳ございませんが、「bootstrap_field field」では、現在の設計上、以下のようなエラーがでるみたいなので、今回はformを使用します。 「Parameter "field" should contain a valid Django BoundField.」 2.ありがとうございます。 ただ、上記のようにfieldではエラーがでるので、 少し力業な気がする方法ですが、実装できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問