dgango · 2021年7月27日

mac django速推一

本文实现了基础的django项目搭建,简单的模板渲染,下一章讲打通数据库
参考了django中文网,常用django命令
首先看一下环境配置

aleenlee@192 mysite % python3 --version
Python 3.9.2

aleenlee@192 mysite % pip3 --version
pip 21.0.1 from /usr/local/lib/python3.9/site-packages/pip (python 3.9)

aleenlee@192 mysite % pip3 list
Package    Version
---------- -------
appdirs    1.4.4
asgiref    3.3.1
distlib    0.3.1
Django     3.1.7
filelock   3.0.12
Pillow     8.1.2
pip        21.0.1
PyMySQL    1.0.2
pytz       2021.1
setuptools 53.0.0
six        1.15.0
sqlparse   0.4.1
virtualenv 20.4.2
wheel      0.36.2 

其中 django是需要安装的 pillow 也是要安装的 pymysql本来准备连接mysql数据库的,现在教程上使用的是sqlite,我没有使用虚拟环境所以virtualenv这个安不安装无所谓.

创建一个项目 叫demo,创建一个app 叫 myblog(这个要记住),运行在8080端口

新建项目: 
aleenlee@192 djangopro % django-admin.py startproject demo

aleenlee@192 djangopro % ls
demo
aleenlee@192 djangopro % cd demo
aleenlee@192 demo % ls
demo        manage.py
安装一个叫myblog的app
aleenlee@192 demo % python3 manage.py startapp myblog

启动:python3 manage.py runserver 8080
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 08, 2021 - 03:56:43
Django version 3.1.7, using settings 'demo.settings'
Starting development server at http://127.0.0.1:8080/

然后就可以访问http://127.0.0.1:8080/ 如图所示

django首页

接下来要配置一些东西 设置项的东西都在setting.py
路由配置在 urls.py

首先setting.py中需要配置 app项,template

#引入template,注意要import os 不然会报错

import os
TEMPLATES = [
    {
     ....
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        ....
}]
#只允许列表中的ip地址访问 现在写* 表示所有的都可以
ALLOWED_HOSTS = ['*']

# 引入app项
INSTALLED_APPS = [
.......

    'myblog',#注册APP应用 这个是上面你创建的app 的名字

]
#修改时区
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'
$配置静态目录

#这个是设置静态文件夹目录的路径
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
#设置文件上传路径,图片上传、文件上传都会存放在此目录里
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

接下来我们设置一些url

写一个helloworld来测试一下子
urls.py中增加

# 引入文件 myblog 为上面创建app的名字
from myblog import views 
# 增加路由

urlpatterns = [
  .....
  path('hello/',views.hello)
]

修改views.py

#增加下面的代码
from django.http import HttpResponse

def hello(request):
    return HttpResponse("hello world")

helloworld

常用模板渲染

输出文字{{变量名}}
for 循环数组 {% for item in items %} {% endfor %}
for循环字典 {% for key,values in dic.items %} {% endfor %}
写一个例子

#urls.py 中增加
path('index/',views.index)
#views.py中增加

def index(request):
#新增变量
    sitename = "myblog"
#新增数组
    list = [
        "apple","orange","banbana"
    ]
#新增字典
    dic = {
        "name":"aleen",
        "age":18
    }
#新增数据保存到字典中
    context= {
        "sitename":sitename,
        "list":list,
        "dic":dic
    }
    #把上下文传递到模板里
    return render(request,'index.html',context)

增加一个templates/index.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MyBlog</title>
</head>
<body>
<h3>网站名:{{ sitename }}</h3>
for 循环数组 {% for item in  list %} 
<li >{{item}}</li>
{% endfor %}
<hr/>
for循环字典  {% for key,values in dic.items  %}
<li> {{ key }}: {{ values }}</li>
{% endfor %}
</body>
</html>

模板的基本使用