0

我的帖子

个人中心

设置

  发新话题
项目目录层级(有后缀为文件, 无后缀为目录)Django项目
----project
--------myApp
------------migrations
----------------0001_initial.py
----------------__init__.py
------------__init__.py
------------admin.py
------------apps.py
------------models.py
------------tests.py
------------urls.py
------------views.py
--------project
------------__init__.py
------------settings.py
------------urls.py
------------wsgi.py
--------templates
------------myApp
----------------grades.html
----------------students.html
--------manage.py




Web-MVC架构在Django中为: MTV架构
M: models
T:  templates
V: views



Models.py:
复制内容到剪贴板
代码:
from django.db import models

# Create your models here.
# 此处的模型类就相当于数据库里面的表, 类里面的属性就相当于数据库里面的字段.
class Grades(models.Model):
    gname = models.CharField(max_length=20)       # 字符串类型, 字符串长度
    gdate = models.DateTimeField()
    ggirlnum = models.IntegerField()
    gboynum = models.IntegerField()      # 整数类型
    isDelete = models.BooleanField(default=False)     # 布尔值
    def __str__(self):
        return self.gname


class Students(models.Model):
    sname = models.CharField(max_length=20)
    sgender = models.BooleanField(default=True)      # 默认是男生
    sage = models.IntegerField()
    scontend = models.CharField(max_length=20)
    isDelete = models.BooleanField(default=False)
    # 关联外键写在最后面, 不需要定义主键(id, 写成pk也可以), 主键在生成时会自动添加, 并且值为自动增加.
    sgrade = models.ForeignKey("Grades")
    def __str__(self):
        return self.sname
Views.py:
复制内容到剪贴板
代码:
from django.shortcuts import render

# Create your views here.

from .models import Grades, Students

def grades(request):
    # 去模型里取数据
    grade_list = Grades.objects.all()
    # 将数据传递(render)给模板
    return render(request, "myApp/grades.html", {"grades":grade_list})

def students(request):
    student_list = Students.objects.all()
    return render(request, "myApp/students.html", {"students":student_list})

# 注: 视图函数的第二个参数demo是代表url最后面的一项, 不区分字母或数字.
def grade_student(request, demo):
    grade_num = Grades.objects.get(gname=demo)
    studentList = grade_num.students_set.all()
    return render(request, "myApp/students.html", {"students":studentList})
Admin.py:
复制内容到剪贴板
代码:
from django.contrib import admin

# Register your models here.
from .models import Grades,Students    # .models是代表当前目录下的models

# 注册

class Studentsinfo(admin.TabularInline):
    model = Students
    extra = 2

@admin.register(Grades)
class GradesAdmin(admin.ModelAdmin):
    # 列表页属性
    list_display = ["id", "gname", "gdate", "ggirlnum", "gboynum", "isDelete"]
    list_filter = ["gname"]
    search_fields = ["gname"]
    list_per_page = 3
    inlines = [Studentsinfo]
    # 添加、修改页属性
    # fields = []
    #fieldsets = []

# admin.site.register(Grades, GradesAdmin)


@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
    def stu_gender(self):
        if self.sgender:
            return "男"
        else:
            return "女"
    stu_gender.short_description = "性别"
    list_display = ["id", "sname", "sage", stu_gender, "scontend", "sgrade", "isDelete"]
    list_per_page = 3
    # 修改执行动作的位置(顶部或者底部)
    actions_on_top = False
    actions_on_bottom = True

# admin.site.register(Students, StudentsAdmin),  实际项目中都是用的装饰器来写, 效果是一样的.
myApp/urls.py:
复制内容到剪贴板
代码:
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^grades/





project/urls.py:
[code]from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include("myApp.urls"))
]
grades.html:
复制内容到剪贴板
代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级信息</title>
</head>
<body>
    <h1>班级信息列表</h1>
    <ul>
        {%for grade in grades%}
        <li>
            <a href="{{grade.gname}}">{{grade.gname}}</a>
        </li>
        {%endfor%}
    </ul>
</body>
</html>
students.html:
复制内容到剪贴板
代码:
<!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.sage}}岁 --- {{student.sgrade}}
        </li>
        {%endfor%}
    </ul>
</body>
</html>
, views.grades),
    url(r'^students/




project/urls.py:
复制内容到剪贴板
代码:
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include("myApp.urls"))
]
grades.html:
复制内容到剪贴板
代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级信息</title>
</head>
<body>
    <h1>班级信息列表</h1>
    <ul>
        {%for grade in grades%}
        <li>
            <a href="{{grade.gname}}">{{grade.gname}}</a>
        </li>
        {%endfor%}
    </ul>
</body>
</html>
students.html:
复制内容到剪贴板
代码:
<!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.sage}}岁 --- {{student.sgrade}}
        </li>
        {%endfor%}
    </ul>
</body>
</html>
, views.students),
    url(r'^grades/(\w+)




project/urls.py:
复制内容到剪贴板
代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级信息</title>
</head>
<body>
    <h1>班级信息列表</h1>
    <ul>
        {%for grade in grades%}
        <li>
            <a href="{{grade.gname}}">{{grade.gname}}</a>
        </li>
        {%endfor%}
    </ul>
</body>
</html>







grades.html:
复制内容到剪贴板
代码:
<!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.sage}}岁 --- {{student.sgrade}}
        </li>
        {%endfor%}
    </ul>
</body>
</html>






students.html:
复制内容到剪贴板
代码:
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include("myApp.urls"))
]






, views.grade_student)
]
[/code]




project/urls.py:
复制内容到剪贴板
代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>班级信息</title>
</head>
<body>
    <h1>班级信息列表</h1>
    <ul>
        {%for grade in grades%}
        <li>
            <a href="{{grade.gname}}">{{grade.gname}}</a>
        </li>
        {%endfor%}
    </ul>
</body>
</html>







grades.html:
复制内容到剪贴板
代码:
<!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.sage}}岁 --- {{student.sgrade}}
        </li>
        {%endfor%}
    </ul>
</body>
</html>






students.html:
复制内容到剪贴板
代码:
from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include("myApp.urls"))
]
捕获1.PNG (30.59 KB)

2018-7-6 23:28

捕获1.PNG

捕获2.PNG (36.46 KB)

2018-7-6 23:28

捕获2.PNG

捕获3.PNG (28.02 KB)

2018-7-6 23:28

捕获3.PNG

捕获4.PNG (20.55 KB)

2018-7-6 23:28

捕获4.PNG

本帖最近评分记录
  • 七彩极 无忧币 +10 精品文章 2018-7-12 22:13



你这个是后台吗?




引用:
原帖由 扉亦般先生 于 2018-07-07 07:04 发表
你这个是后台吗?
对,这个是admin管理,渲染网页没放上来,还有论坛的这个代码插入功能简直不堪入目,各种错乱。



引用:
原帖由 追逐的IT_dream 于 2018-7-7 10:02 发表

对,这个是admin管理,渲染网页没放上来,还有论坛的这个代码插入功能简直不堪入目,各种错乱。
对啊,我就是说论坛根本不敢上代码,没法看.大佬可以给我学学么



引用:
原帖由 扉亦般先生 于 2018-07-07 15:59 发表
对啊,我就是说论坛根本不敢上代码,没法看.大佬可以给我学学么
b站上面一大堆大佬上传的项目视频,你可以去看看,质量还不错。



‹‹ 上一贴:交互模式下和编辑器下换行的方法   |   下一贴:Python学习常见十大问题总结(1) ››
  发新话题
快速回复主题
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 友情链接 |意见反馈 | 网站地图
Copyright©2005-2018 51CTO.COM
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系:bbs@51cto.com