zoukankan      html  css  js  c++  java
  • Model 的使用

    1.   设计数据结构

    问题表Question:作用存放问题

    id 主键 自增

    question_text 题目 varchar120

    created 创建时间 datetime

     

    选项表Choice:作用 存放选项

    id  主键  自增

    question  外键 问题表

    choice_text varchar120

    vote  int default=0

     

    2.   编写model代码

    打开polls/models.py, 编写如下代码

    # 问题模型
    
    class Question(models.Model):
    
        question_text = models.CharField("题目", max_length=120)
    
        created = models.DateTimeField("创建时间", auto_created=True, null=True)
    
       
    
       
    
    # 选项模型
    
    class Choice(models.Model):
    
        question=models.ForeignKey(Question,verbose_name=”题目", on_delete=models.CASCADE)
    
        choice_text = models.CharField("选项", max_length=120)
    
    vote = models.PositiveIntegerField("投票数", default=0)

     

    3.   根据模型,生成数据库中的表

    激活/注册你的应用polls

    打开mysite/settings.py,找到InstalledApps

     

    INSTALLED_APPS = [
    
        'django.contrib.admin',
    
        ………
    
        # 自己编写的应用
    
        'polls.apps.PollsConfig',
    
       
    
        # 第三方应用
    
    ]

     

    迁移

    将我们的模型的生成或者变动,形成一个脚本,通过运行这个脚本,生成数据库中的表 

    需要控制台【Terminal】执行两条命令

    python manage.py makemigrations #创建迁移脚本 

    python manage.py migrate #执行迁移 生成数据库中的表

     

    4. 使用model API

    创建一个Question

    在控制台执行

    q=Question.objects.create(question_text=”世界上最好的编程语言是?”)

     

    获取一条Question数据

    q1 = Quesiotn.objects.get(pk=1)

     

    获取全部Question数据

    q2=Question.objects.all()

     

    打印获取的数据

    q1. question_text

    1.为model添加实例方法 

    def __str__(self):

        return self.question_text

    管理后台的使用 

    1. 创建管理员账号 

    在控制台输入如下命令: 

    python manage.py createsuperuser

    2.   向管理后台注册应用

    打开polls/admin.py文件 

    加入如下代码 

    from polls.models import Question

    admin.site.register(Question)

    3.   运行服务,访问管理员站点

    python manage.py runserver

    访问 127.0.0.1:8000/admin 

    使用注册的超级用户的账号密码登录即可  

    3.1针对多对一关系的管理页面 

    from django.contrib import admin 
    
    from polls.models import Question, Choice 
    
    # 针对多对一中 多的一方,可以让它继承 TabularInline类,作为 “一”的一方 管理界面的嵌入 
    
    class ChoiceInlineAdmin(admin.TabularInline): 
    
        model = Choice
    
    # 配置Question的管理界面 
    
    class QuestionAdmin(admin.ModelAdmin):
    
    #配置QUestion的外键的内嵌界面 
    
    inlines = [ChoiceInlineAdmin, ]
    
    #把模型和配置类注册到一起 
    
    admin.site.register(Question, QuestionAdmin)

    模版Template的使用 

    1.创建模板文件 

    1.1 集中在项目中 

    创建mysite/templates/polls 文件夹 

    1.2分散在应用中 

    创建polls/templates/polls 

    1.3生成文件 

    在polls/templates/polls文件夹创建一个文件 index.html 

    创建的templates文件夹(模板文件夹)需要settings.py 文件中配置

    如:

    # 用来配置项目的模板
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, "templates"),],  # 模板文件夹的路径
            'APP_DIRS': True,  # 可以再创建一个模板文件夹
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]

    2.   编写模板文件 

    {% for obj in question_list%} 
    
            <li>{{obj.question_text}}</li> 
    
    {% endfor%}

    3.   重新编写views中的index方法 

    打开polls/views文件,把index方法改为: 

    def index(request): 
         #获取Question表中所有数据
        question_list = Question.objects.all() 
        #上下文
        template = loader.get_template("polls/index.html") 
        #渲染html
        return (template.render({'question_list': question_list}, request)) 

    该方法 将字典({'question_list': question_list} 传到"polls/index.html" 模板中,进行渲染,把渲染后的结果发给浏览器

    4.   提交响应的简便方法 

    def index(request): 
    
        # question_list中存放数据库中查询的数据 
    
        question_list = Question.objects.all()   
    
        # 上下文  填充 模板中的数据 
    
        context = {'question_list': question_list}
    
        # 将模板和上下文 进行组装, 渲染之后返回给浏览器 
    
        return render(request, "polls/index.html", context)
  • 相关阅读:
    第十一篇 中间件
    第十篇 Form表单
    第九篇 AJAX
    第八篇Django分页
    第七篇 Django-认证系统
    第五篇Django URL name 详解
    第四篇Django之模板语言
    java_tomcat_Server at localhost was unable to start within 45 seconds 小喵咪死活启动报错-二
    java_tomcat_the_APR based Apache Tomcat 小喵咪死活启动报错_临时方案
    linux_设置开机自启动程序脚本
  • 原文地址:https://www.cnblogs.com/dyd520/p/11530325.html
Copyright © 2011-2022 走看看