django项目技术点小结

1. 安装命令:

pip install django==2.2.1

2. 检查是否安装完成

python -m django --version

3. 创建项目:

django-admin startproject JD735

4. 创建两个应用:

cd JD735
django-admin startapp user
django-admin startapp goods

5. 添加应用

此处有两个应用, 将来可能会有更多应用, 因此在mange.py的同级目录中新建一个apps目录, 并将usergoods两个目录移入apps目录中

  • 将两个应用添加到settings.py中的INSTALLED_APPS
# /JD735/settings.py
import sys
# 新增 配置系统路径
sys.path.insert(0, os.path.join(BASE_DIR, "apps"))

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.user',  # 新增(注意前面添加了apps.)
    'apps.goods', # 新增
]

6. 配置URL

  • /JD735/urls.py中添加应用的url

这里的意思就是说:有个根URL, 其它应用的URL包含在根URL中,这样做的好处是:将来若更有更多应用, 更多URL需要管理, 使用这种方法管理起来比较方便些.

# /JD735/urls.py

from django.contrib import admin
from django.views.generic import TemplateView # 处理静态文件的view
from django.urls import path, include  #这里新引入了include模块

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', TemplateView.as_view(template_name='index.html'), name='index'),  # 配置静态页面, 不需要任何view处理逻辑
    path('user/', include('user.urls', namespace="user")), # 这里应用了include模块
    path('goods/', include('goods.urls', namespace="goods")),  # 以此类推
]
  • 在应用自身的URL中添加自身的url规则,请注意django版本, 不同版本的url规则不一样,以下参考自django2.2官方文档
# apps/user/urls.py

from django.contrib import admin
from django.urls import path
from . import views
from .apps import UserConfig  # 此处应用了apps.py文件

app_name = UserConfig.name  # (推荐这种)这一步是必须的, 不然报错.

urlpatterns = [
    path('', views.index, name='index'),
    path('article/<int:user_id>', views.user_info, name='user_info'),
]

建议:

# apps/users/apps.py
from django.apps import AppConfig

class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户信息'  # 建议在此加上verbose_name, 将在admin后台管理系统中更加友好的展示

goods

# apps/goods/urls.py
from django.contrib import admin
from django.urls import path
from . import views
app_name = "goods"  # 或者使用更加直接的解决方法(不推荐)
urlpatterns = [
    path('', views.goods_list, name='goods_list'),
    path('article/<int:goods_id>', views.goods_info, name='goods_info'),
]

7. template

7.1 模版冲突

django 按照 5 里的添加顺序查找templates, 不同APP下template的同名html文件会造成冲突,导致页面错误

解决方案:

在应用的templates目录下, 创建以APP名为名称的目录, 将html文件放入新创建的目录下即可.

/goods/templates/goods/goods_list.html中用到的商品列表

    {% for goods in goods_list %}
    <a href="{% url 'goods:goods_list' goods_id %}"> {{ goods.goods_name }} </a>
    <br>
    {% endfor%}

7.2 模版过滤器

{{ value | filter1 | filter2 …}}

8. models(ORM)

一个model对应一张数据表, 在django中models以类的形式表现
它包含了一些基本字段以及数据的一些行为

# apps/user/models.py
from django.db import models
import arrow

class user(models.Model):
    """
    用户表
    """
    user_name = models.CharField("用户名", max_length=32)
    user_address = models.TextField("收件地址", null=True)
    user_pwd = models.CharField('密码', max_length=16)
    create_time = models.IntegerField('创建时间', max_length=11)
    
    # 建议为每个MODEL配置Meta信息
    class Meta:
        verbose_name = '用户信息'   # 别名
        verbose_name_plural = verbose_name  # 复数形式的别名,若没有这个配置,将导致admin后台,出现`用户信息s`这样的格式

goods.Model 略

以上内容完成后, 在命令行中运行以下两条命令, 用以生成数据表

python manage.py makemigrations [user] 
python manage.py migrate  

9. 强大的后台,admin

python manage.py createsuperuser
输入用户名:admin
输入密码:admin123
# /JD735/settings.py
以下配置,将影响admin后台管理系统
# 默认值
# LANGUAGE_CODE = 'en-us'
# TIME_ZONE = 'UTC'

# 修改后的值, 作用是将admin后台改为中文,两种写法都可以
# LANGUAGE_CODE = 'zh-Hans'
LANGUAGE_CODE = 'zh-hans'

# 修改后的值, 作用是修改时区为中国时区
TIME_ZONE = 'Asia/Shanghai'

# 关于时区的配置,不要使用默认的时区
# USE_TZ = True 这是django 默认的,要改为False 
USE_TZ = False

下一步要做的是:将生成的app注册到django后台管理系统中,

# apps/user/admin.py
# 方法1
from django.contrib import admin
from .models import Reporter, Article
class ArticleAdmin(admin.ModelAdmin):
    """
    配置文件
    list_display 是需要展示的字段
    list_filter
    """
    list_display = ("headline", "content", "pub_time", "reporter")
    list_filter = ('pub_time', "reporter")
    search_fields= (
        'reporter',
    )


class ReporterAdmin(admin.ModelAdmin):
    """
    配置文件
    """
    list_display = ("full_name",)


admin.site.register(Reporter, ReporterAdmin)
admin.site.register(Article, ArticleAdmin)
# 方法2(推荐):
# apps/user/admin.py
from django.contrib import admin


@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ("headline", "content", "pub_time", "reporter")
    list_filter = ('pub_time', "reporter")
    search_fields= (
        'reporter',
    )

10 settings.py文件配置使用说明

#settings.py
# 数据库相关配置
# default sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# use mysql
# 将下面的{}按相应的内容写入即可
# 注意mysql-python驱动的安装
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': {database_name},
        'HOST':{host},
        'USER':{user},
        'PASSWORD':{password},
        'PORT':{port}, 
    }
}



11. 分页功能

分布功能可以使用 django-pure-pagination 0.3.0, 使用方法参考Github链接

12.个人总结的 项目开发流程

  1. 需求分析:

    • 对象是什么
    • 谁用
    • 谁管理
      • 怎么管理
        输出:需求分析分档
  2. 拆分需求:

    • 谁的需求
    • 谁可以做
      输出: 拆分后需求文档
  3. 抽象出数据模型

输出: 数据模型(即要建哪些表, 表之间的关联, 以及表中的字段)

  1. 数据建模(依据数据模型来建模)

输出:数据库实例
5. 前后端分离, 依据需求文档编码实现

输出: 编码文件及文档文件
6. 前后端联调

输出: 依据需求文档前后端联调,实现功能

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值