程序员

python| 初探 django

2018-08-30  本文已影响85人  daydaygo

date: 2018-8-29 21:45:59
title: python| 初探 django
description: 初探 django

遇到使用 django 的项目, 用自己的方式熟悉起来

更新: 一直局限于 pycharm 要本地有 python 环境, 才可以智能识别代码, 现在才发现可以使用 project interpreter 进行设置, local/ssh/docker 都可以, 又可以折腾起来了~

教程

开发环境配置

不多说, 直接上 dockerfile:

# FROM ubuntu:18.04
FROM rastasheep/ubuntu-sshd:18.04
LABEL maintainer="1252409767@qq.com"

RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && \
    apt update
RUN apt-get update && apt-get install -y locales && \
    # rm -rf /var/lib/apt/lists/* && \
    localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8

RUN apt install -y fish vim less curl telnet net-tools ipython3 python3-pip
RUN echo -e "[global]\nindex-url=https://mirrors.aliyun.com/pypi/simple/\nformat=columns" > /etc/pip.conf && \
    pip3 install --upgrade pip && \
    pip3 install django

WORKDIR /var/www/

还有 docker-compose:

version: '3'
services:
    u:
        build:
            context: linux
            dockerfile: ubuntu.Dockerfile # https://hub.docker.com/_/ubuntu/
        volumes:
            - ../:/var/www
        ports: # https://github.com/rastasheep/ubuntu-sshd
            - "8038:80"
            - "1138:22"
        tty: true

简单说明几个有意思的点:

还有一些细节 -- Ubuntu使用国内源 pip使用国内源 pip设置 等, 都是一点一点积累的.

正是这些积累, 尝试新事物 django 的时候, 不会有一个陡峭的学习曲线, 可以快速 get 一个新技能.

django: 运行第一个应用

安装好 django 后命令行就可以 django-admin, 可以通过模板来创建项目

# 通过模板来创建项目
django-admin startproject startproject

# 查看
root@9e16d0821126 /v/w/c/p/d/startproject# tree
.
├── db.sqlite3
├── manage.py
└── startproject
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-36.pyc
    │   ├── settings.cpython-36.pyc
    │   ├── urls.cpython-36.pyc
    │   └── wsgi.cpython-36.pyc
    ├── settings.py
    ├── urls.py
    └── wsgi.py

2 directories, 10 files

# 启动进行测试
cd startproject
python3 manage.py runserver

启动后, 看到如下输入:

Run 'python manage.py migrate' to apply them.

August 29, 2018 - 14:13:27
Django version 2.1, using settings 'startproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

为啥把这段贴出来呢? 是要传递一个很简单的观点:

英文很简单也很重要, 经常给我们很多有用信息

我们来测试一下:

telnet 127.0.0.1 8000 # 测试端口是否通
netstat -alnp|grep 8000 # 查看网络服务的信息
curl 127.0.0.1:8000 # 测试 http, 也可以用 wget

django: 深入一点示例项目

上一节已经使用 tree 来查看 项目目录结构, 这节我们来深入几个地方

# 项目管理入口
python3 manage.py

# 换ip:port, 这样可以在容器外访问
python3 manage.py runserver 0.0.0.0:80

# 调试, 可以配合之前的 ipython 使用
python3 manage.py shell

django: project & app

简单看完 django 的 project 概念后, 我们来看到 project 下的一个新概念 -- app

# 新建一个名叫 blog 的 app
python3 manage.py startapp blog

# 目录结构
root@9e16d0821126 /v/w/c/p/d/startproject# tree blog/
blog/
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-36.pyc
│   ├── admin.cpython-36.pyc
│   ├── models.cpython-36.pyc
│   └── views.cpython-36.pyc
├── admin.py
├── apps.py
├── migrations
│   ├── __init__.py
│   └── __pycache__
│       └── __init__.cpython-36.pyc
├── models.py
├── tests.py
└── views.py

3 directories, 12 files

着重来看几个:

还有一些常见的:

# model + migration
python manage.py makemigrations blog # 通过 model 生成 migration 文件
python manage.py sqlmigrate blog 0001 # 查看 migration 对应的 sql 语句
python manage.py migrate blog # 执行 migrate

# admin模块
python manage.py createsuperuser

写在最后

为什么我们要使用框架呢? 因为框架了封装了很多 通用的功能, 有些是我们知道的, 有些是 我们不知道的, 了解框架, 既是学习技术上的 架构设计, 也是补充相应技术的 领域知识, 比如上面没有提到的 安全, 框架往往比我们做得更多.

上一篇下一篇

猜你喜欢

热点阅读