Django 安装、使用以及数据库访问

一、安装django

sudo pip install Django
sudo apt install sqlite3

sqlite3后面Django Admin 管理工具要用到。
二、创建 HelloWorld 项目:

django-admin startproject HelloWorld

并进入项目目录: cd HelloWorld/ 

三、修改urls.py:vi HelloWorld/urls.py

"""HelloWorld URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin

from . import view

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', view.index),
    url(r'^$', view.hello),
]

四、新建一个 view.py 文件:vi HelloWorld/view.py 

#coding=utf-8
from django.http import HttpResponse
from django.shortcuts import render

def hello(request):
    return HttpResponse("Hello world ,你好世界! ")

def index(request):
    context          = {}
    return render(request, 'myapp/index.html', context)

五、启用Django Admin 管理工具:

$ python manage.py migrate
$ python manage.py createsuperuser
Username (leave blank to use 'xxxxxxx'): 
Email address: xxxxx@xxxxxx
Password:q1w2e3r4 
Password (again): q1w2e3r4
Superuser created successfully.

六、修改settings.py中TEMPLATE:vi HelloWorld/settings.py

将TEMPLATE中的'DIRS': [],修改为:'DIRS': [os.path.join(BASE_DIR,'templates')]
修改后如下:

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',
            ],
        },
    },
]

修改数据库配置也在这里如把sqlite3改为pg:

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        # 'ENGINE': 'django.db.backends.mysql',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'testdb',#数据库名称
        'USER':'postgres',#拥有者,这个一般没修改
        'PASSWORD':'****',#密码,自己设定的
        'HOST':'127.0.0.1',#
        'PORT':'5432',
    }

七、页面

~/HelloWorld$mkdir templates

~/HelloWorld$vi templates/base.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>菜鸟教程 Django 测试。</p>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
</body>
</html>

~/HelloWorld$mkdir templates/myapp

~/HelloWorld$vi templates/myapp/index.html

{% extends "base.html" %}
 
{% block mainbody %}
	<p>继承了 ../base.html 文件</p>
{% endblock %}

八、项目目录结构:~$ tree

└── HelloWorld
    ├── db.sqlite3
    ├── HelloWorld
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── __pycache__
    │   ├── settings.py
    │   ├── settings.pyc
    │   ├── urls.py
    │   ├── urls.pyc
    │   ├── view.py
    │   ├── view.pyc
    │   ├── wsgi.py
    │   └── wsgi.pyc
    ├── manage.py
    ├── readme.txt
    └── templates
        ├── base.html
        └── myapp
            └── index.html

九、启动项目:

$ python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).
July 07, 2018 - 14:02:47
Django version 1.11.14, using settings 'HelloWorld.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

十、浏览器中访问

1、http://127.0.0.1:8000/index

会调用 view.py中index方法,并转向:templates/myapp/index.html。

2、http://127.0.0.1:8000/调用 view.py中hello方法

3、http://127.0.0.1:8000/admin进入Django Site administration管理登入页面:输入上面第五点的用户名、密码。

十一、读取数据库并显示在前端

1、追加models:vi HelloWorld/models.py

from __future__ import unicode_literals
from django.db import models

# Create your models here.
class Employee(models.Model):
     name=models.CharField(max_length=20)

2、修改INSTALLED_APPS字段加上 HelloWorld:$ vi HelloWorld/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'HelloWorld',
]

3、下面两条命令执行后在数据库里建了HelloWorld_employee表:

~/HelloWorld$ python manage.py makemigrations HelloWorld
Migrations for 'HelloWorld':
  HelloWorld/migrations/0001_initial.py
    - Create model Employee
~//HelloWorld$ python manage.py migrate
Operations to perform:
  Apply all migrations: HelloWorld, admin, auth, contenttypes, sessions
Running migrations:
  Applying HelloWorld.0001_initial... OK

4、数据库表中追加数据

~/HelloWorld$ sqlite3 db.sqlite3
sqlite> .schema HelloWorld_employee
CREATE TABLE "HelloWorld_employee" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(20) NOT NULL);
sqlite> INSERT INTO HelloWorld_employee(id, name) VALUES (1, '萝莉1');
sqlite> INSERT INTO HelloWorld_employee(id, name) VALUES (2, '萝莉2');
sqlite> 

5、修改urls.py追加条目table:vi HelloWorld/urls.py

from django.conf.urls import url
from django.contrib import admin

from . import view

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/$', view.index),
    url(r'^table/$',view.table,name='table') ,
    url(r'^$', view.hello),
]

python3的路由写法有点不同:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('table/', view.table, name='table'),
    path('index/', view.index),
    path('', view.hello),
]

6、 view.py 中追加table方法:vi HelloWorld/view.py 

#coding=utf-8
from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import HttpResponseRedirect,Http404,HttpResponse,render_to_response
from .models import Employee

def hello(request):
    return HttpResponse("Hello world ,你好世界! ")

def index(request):
    context          = {}
    return render(request, 'myapp/index.html', context)

def table(request):
    names=Employee.objects.all()    #获取我们的数据库信息到names里
    return render_to_response("table.html",locals()) 

7、增加页面vi templates/table.html 

<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>显示雇员</title>
    </head>
    <body>
        <p>雇员名单</p>
        {% for name in names %}
        <p>{{name.id}}&nbsp;&nbsp;&nbsp:&nbsp;&nbsp;&nbsp{{name.name}}</p>
        <br>
        {% endfor %}
    </body>
</html>

项目结构:

├── HelloWorld
│   ├── db.sqlite3
│   ├── HelloWorld
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── migrations
│   │   │   ├── 0001_initial.py
│   │   │   ├── 0001_initial.pyc
│   │   │   ├── __init__.py
│   │   │   └── __init__.pyc
│   │   ├── models.py
│   │   ├── models.pyc
│   │   ├── __pycache__
│   │   ├── settings.py
│   │   ├── settings.pyc
│   │   ├── urls.py
│   │   ├── urls.pyc
│   │   ├── view.py
│   │   ├── view.pyc
│   │   ├── wsgi.py
│   │   └── wsgi.pyc
│   ├── manage.py
│   ├── readme.txt
│   └── templates
│       ├── base.html
│       ├── myapp
│       │   └── index.html
│       └── table.html

8、运行截图http://127.0.0.1:8000/table:

转载于:https://my.oschina.net/u/2245781/blog/1842033

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值