蓝鲸Django: 创建第一个项目
目录
创建第一个项目
[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) 及端口号,如果正常启动,输出结果如下:
创建应用
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
准备静态文件
将模板和css文件放到momments目录下:
修改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")
完善应用
编写更多的页面相应函数,绑定模板。
同时添加路由。
完善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/user ,http://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>