蓝鲸Django: 创建第一个项目

来自CloudWiki
跳转至: 导航搜索

创建第一个项目

[root@localhost Python-3.7.5]# cd ~

使用 django-admin 来创建 wechat 项目:

django-admin startproject wechat

创建完成后我们可以查看下项目的目录结构:

$ cd wechat/
$ yum install tree
$ tree
.
|-- wechat
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

目录说明:

   HelloWorld: 项目的容器。
   manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
   HelloWorld/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
   HelloWorld/settings.py: 该 Django 项目的设置/配置。
   HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
   HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

接下来我们进入 wechat 目录输入以下命令,启动服务器:

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。

在wechat/settings.py中下面这一项添加允许访问的IP地址:

ALLOWED_HOSTS = ['10.0.0.30']

这里把Linux服务器的本机IP设上即可。

在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 10.0.0.30:8000) 及端口号,如果正常启动,输出结果如下:

Python9-14.png

创建应用

python3 manage.py startapp moments


注册应用

在 settings.py 中添加我们的应用名称moments

# Application definition

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

编写view文件

在moments目录下的view文件:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.i

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

编写urls文件

wechat/wechat/urls.py 指定首页路径:

"""wechat URL Configuration

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home)
]
~

python3 manage.py runserver 0.0.0.0:8000

Bd20-3-4.png

准备静态文件

将模板和css文件放到momments目录下:

500px

修改view文件

使用模板(templates)来展示网页。

moments/view.py:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.i

def home(request):
    return render(request,"homepage.html")

Bd20-3-6.png

完善应用

编写更多的页面相应函数,绑定模板。

同时添加路由。

完善view文件

moments/view.py:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.i

def home(request):
    return render(request,"homepage.html")

def show_user(request):
    return render(request,"user.html")

def show_status(request):
    return render(request,"status.html")

def submit_post(request):
    return render(request,"my_post.html")

添加路由

wechat/wechat/ursl.py:

 
"""wechat URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from moments.views import home
from moments.views import show_user,show_status,submit_post
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', home),
    path('user',show_user),
    path('status',show_status),
    path('post',submit_post)
]


浏览器访问:http://10.0.0.30:8000/userhttp://10.0.0.30:8000/post , http://10.0.0.30:8000/status

渲染页面

渲染页面: 把数据传到页面中

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.i

def home(request):
    return render(request,"homepage.html")

def show_user(request):
    po = {"name": "Xiao Po",
          "region": "Xi'an",
          "motto": "I love Xi'an",
          "pic": "Po2.jpg",
          "email": "po@disney.com"
         }
    return render(request,"user.html",{"user":po})

def show_status(request):
    return render(request,"status.html")

def submit_post(request):
    return render(request,"my_post.html")

user.html:

[root@localhost templates]# vi user.html
                <img src="/static/image/{{ user.pic }}" class="img-responsive img-thumbnail">
            </div>
            <div class="col-md-10">
                <h1 style="font-size:70px">{{ user.name }}</h1>
                <p style="font-size:50px">Email: {{ user.email }}</p>
            </div>
        </div>
        <div class="row" style="margin-top:62px">
            <div class="col-md-4">
                <p style="font-size:50px">Region</p>
            </div>
            <div class="col-md-8">
                <p style="font-size:50px;color:gray">Chicago America</p>
            </div>
        </div>
        <hr>
        <div class="row">
            <div class="col-md-4">
                <p style="font-size:50px">What's up</p>
            </div>
            <div class="col-md-8">
                <p style="font-size:50px;color:gray">{{ user.motto }}</p>
            </div>
        </div>