django自己学習の基本的なプロセス(2つ)

7、サーバーを起動します

事前設定作業が完了したら、サーバーを正式に起動できます。これは、開発とデバッグに限定されたDjangoが提供する軽量サーバーです。ドキュメントに文があります(「私たちはWebフレームワークの専門家ですが、 Webサーバーの専門家ではありません」)。

  • コマンドラインでサーバーを起動できます
python manage.py runserver ip:port  #(ip和端口可以不写,默认为本机以及8000端口)

8、管理サイト管理

概要:データベースコンテンツのリリース、およびコピー、追加、削除、変更、チェックについて

  1. まず、管理アプリケーションを構成する必要があります。setting.pyのINSTALLED_APPSにadmin.contrib.adminを追加します。
  2. 管理者ユーザーを作成します。
  • python manage.py createsuperuserコマンドを実行して、ユーザー名、メールアドレス、パスワードを順番に入力します
  • 管理インターフェースにログインするためのWebサイトは... / admin
  1. 中国化
  • adminのサイト管理ページは純粋な英語です。中国語に切り替える場合は、次の構成を行う必要があります
    。setting.pyで変更します。LANGUAGE_CODE = 'zh-Hans' TIME_ZONE='Asia/shanghai'
  1. 管理テーブル
from django.contrib import admin

# Register your models here.
from .models import Grades, Students  # (自行引入)


# 关联创建(当创建班级表时附带要创建两个学生信息)
class StudentsInfo(admin.TabularInline):  # 也可以用admin.StackedInline
    model = Students
    extra = 2


# 注册
class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]  # 关联创建时使用
    # 列表页属性
    list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum', 'isDelete']  # 设置要显示的字段
    list_filter = ['gname']  # 设置过滤器
    search_fields = ['gname']  # 设置搜索器
    list_per_page = 5  # 设置每页显示的条数

    # 添加、修改页属性
    fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete']  # 修改添加顺序
    '''
    fieldsets = [                                                   # 给添加的属性进行分组
        ("num", {"fields": ['ggirlnum', 'gboynum']}),
        ("base", {"fields": ['gname', 'gdate', 'isDelete']}),
    ]
    '''
    # 执行动作位置
    actions_on_top = False
    actions_on_bottom = True


admin.site.register(Grades, GradesAdmin)


# 用装饰器注册(可以删除最下面的register注册用装饰器)
# @admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
    # 用于对布尔值进行判断,逻辑分析后输出
    def gender(self):
        if self.sgender:
            return "男"
        else:
            return "女"

    # 对于字段名进行重定义
    gender.short_description = "性别"

    # 列表页属性
    list_display = ['pk', 'sname', 'sage', gender, 'scontend', 'sgrade', 'isDelete']  # 设置要显示的字段
    list_per_page = 2  # 设置每页显示的条数

    # 添加、修改页属性
    fields = []  # 修改添加顺序
    '''
    fieldsets = []
    '''


admin.site.register(Students, StudentsAdmin)

まず、管理対象のテーブルをインポートしてから、レジストリを登録するためのクラスを作成します。次の点に注意する必要があります。

 # 列表页属性
    list_display = ['pk', 'gname', 'gdate', 'ggirlnum', 'gboynum', 'isDelete']  # 设置要显示的字段
    list_filter = ['gname']  # 设置过滤器
    search_fields = ['gname']  # 设置搜索器
    list_per_page = 5  # 设置每页显示的条数

    # 添加、修改页属性
    fields = ['ggirlnum', 'gboynum', 'gname', 'gdate', 'isDelete']  # 修改添加顺序
    '''
    fieldsets = [                                                   # 给添加的属性进行分组
        ("num", {"fields": ['ggirlnum', 'gboynum']}),
        ("base", {"fields": ['gname', 'gdate', 'isDelete']}),
    ]
    '''

この部分では、フォームの表示制約と追加時の制約について説明します。特定の関数はコードで注釈が付けられています。テーブルデータの追加を制限する場合、フィールドとフィールドセットは2つのうちの1つを選択することによってのみ制限できます。

  1. 関連オブジェクト
    外部キー関係に従って、studentテーブルはclassテーブルに関連付けられているため、クラスを作成するときに、この関係に基づいてクラスに参加するための2つの追加のstudent情報を作成できます。
# 关联创建(当创建班级表时附带要创建两个学生信息)
class StudentsInfo(admin.TabularInline):  # 也可以用admin.StackedInline
    model = Students   # 对于要关联的表进行标注
    extra = 2          # 对于要额外创建的个数进行限制

最初に関連するクラスを作成し、それをクラス登録クラスに追加しますinlines = [StudentsInfo] # 关联创建时使用

  1. ブール値の判断
    テーブルを作成するとき、一部のフィールドはブール値タイプであることが多いため、表示するときにtrueとfalseで表示されますが、これは私たちの意図ではなく、男の子にはtrue、女の子にはfalseを使用するだけです。 。したがって、ブール値をフィルタリングする必要があります。
def gender(self):
        if self.sgender:
            return "男"
        else:
            return "女"

    # 对于字段名进行重定义
    gender.short_description = "性别"

このコードを学生テーブル登録に記述します。ブール値を表示する結果に変換し、表示するフィールドの定義名を変更できます。

  1. 実行位置
# 执行动作位置
    actions_on_top = False
    actions_on_bottom = True

ビューを定義する

  1. django MTVプログラミングモデルによると、ページごとに独自のビューをカスタマイズする必要があります。まず、アプリのビューを紹介from django.http import HttpResponseしてから、クラスを記述して定義します。
def index (request):
	return HttpResponse("You are so cute!")
  1. ビューを定義しfrom django.conf.urls import includeたら、URLを構成する必要があります。まず、プロジェクトディレクトリのurls.pyファイルのインポートを変更し、URLPATTERNS配列に追加しpath("",include('myAPP.urls'))ますアプリのアプリケーションディレクトリにurls.pyファイルを作成します次の操作を実行します。
from django.conf.urls import url
from . import views
urlpatterns=[
	path("",views.index)
]
  1. 最後に、テンプレートを作成します。アプリケーションとメインパッケージのstatisticsディレクトリの下にtemplatesディレクトリを作成し、テンプレートのパスを構成します。[os.path.join(BASE_DIR、 'templates)を' DIRS 'に追加します。 in TEMPLATES in settings.py ')]
    上記の作業が完了したら、簡単なページング操作を実行できます。以下は、私のビュー、URL定義、およびテンプレートの例です。
  • 見る
from django.shortcuts import render

# Create your views here.

from django.http import HttpResponse


def index(request):
    return HttpResponse("you are so cute!")


# 查看班级表视图
from .models import Grades


def grades(request):
    # 去模板里取数据
    gradesList = Grades.objects.all()
    # 将数据传递给模板,模板在渲染页面,将渲染好的页面返回浏览器
    return render(request, 'myAPP/grades.html', {
    
    "grades": gradesList})


# 查看学生表视图
from .models import Students


def students(request):
    # 去模板里取数据
    studentsList = Students.objects.all()
    # 将数据传递给模板,模板再渲染页面,将渲染好的页面返回浏览器
    return render(request, 'myAPP/students.html', {
    
    "students": studentsList})


def gradesStudents(request,num):
    grade = Grades.objects.get(pk=num)
    studentsList = grade.students_set.all()
    return render(request, 'myAPP/students.html', {
    
    "students": studentsList})

  • URL
from django.conf.urls import url
from django.urls import path
from . import views

urlpatterns = [
    url(r'^$', views.index),
    path('grades', views.grades),
    path('students', views.students),
    path('grades/<int:num>', views.gradesStudents)  # 这里的num要与视图中定义的函数形参名字一致
]

  • テンプレート
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生页面展示</title>
</head>
<body>
    <h1>学生页面展示</h1>
    <ul>
        {
    
    % for student in students %}
        <li>{
    
    {
    
     student.sname }}--{
    
    {
    
     student.scontend }}</li>
        {
    
    % endfor %}
    </ul>
</body>
</html>

おすすめ

転載: blog.csdn.net/baldicoot_/article/details/107158570