• django项目搭建


    一、前后端不分离

    1、templates目录里存放html文件,新建同级目录"static"存放css、images、js文件

    2、settings文件中设置static目录的路径

    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR,'static'),
    )#静态文件的目录

    3、views文件中设置前端页面要取的值

    from django.shortcuts import render
    
    # Create your views here.
    def index(requset):
        navs = ['我的相册', '我的日记', 'python', 'linux', '接口测试']
        title = '唐少林的个人博客'
        content = {'daohang': navs, 'title': title}
        articles = [
            {'title':'文章1','content':'文章11111111'},
            {'title': '你是什么人便会遇上什么人', 'content': '有时就为了一句狠话,像心头一口毒钉,永远麻痺着亲密感情交流。'},
        ]
        dic = {'articles':articles}
        return render(requset,'index.html',dic)

    4、urls文件中配置

    from django.contrib import admin
    from django.urls import path
    from user import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/',views.index),
        path('info/',views.info),
    ]

    二、前后端分离

    1、前端模板继承

    多个页面重复的页面代码,可以使用模板继承,新建一个base.html文件,把多个页面重复内容,粘贴到页面上

    <script type="text/javascript" src="/static/js/hc-sticky.js"></script>
    <script type="text/javascript" src="/static/js/comm.js"></script>
        {% block css %}
        {% endblock %}
    {% block js %}
    {% endblock %}
    
    <!--[if lt IE 9]>
    <script src="/static/js/modernizr.js"></script>
    <![endif]-->
    </head>
    
    <body>
    <header class="header-navigation" id="header">
      <nav><div class="logo"><a href="/">{{ title }}</a></div>
        <h2 id="mnavh"><span class="navicon"></span></h2>
        <ul id="starlist">
            {% for nav in daohang %}
          <li><a href="index.html">{{ nav }}</a></li>
            {% endfor %}
        </ul>
    </nav>
    </header>
    
    {% block content %}
    
    {% endblock %}

    具体页面中使用时直接继承base页面

    {% extends 'base.html' %}#继承base页面
    {% block content %}
    <article>
      <aside>
        <div class="l_box" id="stickMe">
          <div class="about_me">
            <h2>关于我</h2>

    2、上下文处理

    views文件中,多个函数都使用到的变量,可以使用上下文处理,dj_test目录下新建context_process.py文件

    def nav_title_process(requset):
        #上下文管理器,这个函数里返回的每个变量,在每个页面里面都可以用
        navs = ['我的相册', '我的日记', 'python', 'linux', '接口测试']
        title = '唐少林的个人博客'
        content = {'daohang':navs,'title':title}
        return content

    setting文件中设置

    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',
                    'dj_test.context_process.nav_title_process'
                ],
            },
        },
    ]

    views文件中删除context_process.py文件中定义的变量

    3、同步表结构

    models文件中创建表结构

    from django.db import models
    
    # Create your models here.
    class Nav(models.Model):
        name = models.CharField(max_length=10,unique=True,verbose_name='导航名称')
        is_delete = models.SmallIntegerField(default=1,verbose_name='是否被删除')
        create_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True)#插入数据的时候自动取当前时间
        update_time = models.DateTimeField(verbose_name='修改时间',auto_now=True)#修改的时候,时间自动更新
    
        # def __str__(self):
        #     return self.name
        class Meta:
            verbose_name = '导航表'
            verbose_name_plural = verbose_name
            db_table = 'nav'#设定表名
            # ordering = ['create_time']#查询时排序

    再运行命令

    python manage.py makemigrations #产生迁移数据库的代码
    python manage.py migrate #同步到数据库

  • 相关阅读:
    spark sql 性能调优
    google c++ 规范
    idea
    Ubuntu16.04-hadoop3 安装与配置
    NewRelic 性能监测工具
    关于 g++ link
    vue 实现 多个 数字滚动增加动效
    mac 电脑安装express、npm…… 报 ‘Missing write access to /usr/local/lib/node_modules’错误解决办法
    vue + mock.js 简单使用
    vue去掉地址栏# 方法
  • 原文地址:https://www.cnblogs.com/rj-tsl/p/11705945.html
Copyright © 2020-2023  润新知