小白神器 - Django - 起步
小白神器 - Django - 起步
一. Django下载
1. 命令行
pip install django==1.11.16
pip install django==1.11.16 -i https://pypi.doubanio.com/simple/
#指定地址之后下载速度更快
2.Pycharm
#使用 pycharm 下载 可以使用pip 下载同上, 也可以使用以下界面操作
sttings -> 解释器 -> 点+号 -> 输入Django -> 选择版本 -> 下载
二. 创建项目
1. 命令行
django-admin startproject 项目名
2.Pycharm
file -> new project -> 选择Django -> 输入项目名称 -> 选择解释器 -> 输入APP名称 -> 创建项目
三. 启动项目
1. 命令行
切换到项目的根目录下 manage.py
python manage.py runserver #127.0.0.1:8000
python manage.py runserver 8000 # 127.0.01
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:8000
2. pycharm
修改配置
点三角启动 dj
四. 配置文件(settings)
1.静态文件
STATIC_URL = '/static/' #别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'
]
2.模板
TEMPLARTES
DIRS [os.path.join(BASE_DIR, 'tempiates)]
3. 中间件
注释掉 'django.middleware.csrf.CsrfViewMiddleware'
4. APP
4-1 创建APP
命令行
python manage.py startapp app名称
pycharm
tools -> run manage.py task -> startapp app名称 也可以在创建项目时创建
4-2 注册APP
# setting.py
INSTALLED_APPS = [
'app01' 或者 'app01.apps.App01Config', ]
5. form表单
1. action = '' method ='post' action 提交的地址 method 请求方式
2. 所有的input标签要有name属性
3. 一个input标签的type='submit' 或者 button
五. Django 使用mysql 数据库的流程
1. 创建一个mysql 数据库
2. 在setting中配置DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'publisher',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 456
}
}
3. 告诉Django使用pymysql连接数据库
在settings统计目录下的__init__.py写代码:
import pymysql
pymysql.install_as_MYSQLdb()
写表 在app下的mode.py中写类(继承models.Model)
class User(models.Model): # 默认表名 app01_user
name = models.CharField(max_length=32) # varchar(32)
pwd = models.CharField(max_length=32) def __str__(self):
return self.name
4. 数据库迁移
python manage.py makemigrations #记录models的变更记录
python manage.py migrate #把变更记录的操作同步到数据库中
六. pycharm 操作数据库
Django相关文件总结:
此文件夹主要用于创建 HTML文件
HTML文件用于前端页面的展示
HTMl 文件名与 url.py app下views类名有关
templates文件夹
自行创建的文件夹,
用于存放 HTML 相关的 css js 文件 及相关库
static 文件夹
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app_pub.apps.AppPubConfig', #激活app操作
] MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware', #注释掉
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
] DATABASES = { #数据库连接配置操作
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'publisher',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': 456
}
} STATIC_URL = '/static/' #配置静态文件
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static'),
]
sttings.py
from django.conf.urls import url
from django.contrib import admin
from app_pub import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index), 1、单一路由对应 url(r'^index$', views.index), 2、基于正则的路由 url(r'^index/(\d*)', views.index),
url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), 3、添加额外的参数 url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}), 4、为路由映射设置名称 url(r'^home', views.home, name='h1'),
url(r'^index/(\d*)', views.index, name='h2'), 设置名称之后,可以在不同的地方调用,如:
•模板中使用生成URL {% url 'h2' 2012 %}
•函数中使用生成URL reverse('h2', args=(2012,)) 路径:django.urls.reverse
•Model中使用获取URL 自定义get_absolute_url() 方法 5、根据app对路由规则进行分类 url(r'^web/',include('web.urls')), 6、命名空间 a. project.urls.py from django.conf.urls import url,include urlpatterns = [
url(r'^a/', include('app01.urls', namespace='author-polls')),
url(r'^b/', include('app01.urls', namespace='publisher-polls')),
] b. app01.urls.py from django.conf.urls import url
from app01 import views app_name = 'app01'
urlpatterns = [
url(r'^(?P<pk>\d+)/$', views.detail, name='detail')
] c. app01.views.py def detail(request, pk):
print(request.resolver_match)
return HttpResponse(pk) 以上定义带命名空间的url之后,使用name生成URL时候,应该如下:
•v = reverse('app01:detail', kwargs={'pk':11})
•{% url 'app01:detail' pk=12 pp=99 %} django中的路由系统和其他语言的框架有所不同,在django中每一个请求的url都要有一条路由映射,这样才能将请求交给对一个的view中的函数去处理。其他大部分的Web框架则是对一类的url请求做一条路由映射,从而是路由系统变得简洁。
urls.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day28.settings")
application = get_wsgi_application() WSGI理解为你写的【python代码块】和【Web服务器接口】 的配置文件。
wsgi.py
# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
# 如下设置放置的与project同名的配置的 __init__.py文件中 import pymysql
pymysql.install_as_MySQLdb()
__init__.py(settings同级)
from django.db import models # Create your models here.
class Publisher(models.Model):
pid = models.AutoField(primary_key=True) #主键
name = models.CharField(max_length=32, unique=True) #出版社名称 主要用于数据库创建表
app 下 models.py
from django.shortcuts import render, redirect, HttpResponse
from app_pub import models # 从数据库获取所有出版社对象
def index(request):
all_publisher = models.Publisher.objects.all().order_by('pid')
return render(request, 'index.html', {'all_publisher': all_publisher}) 写函数, 连接HTML与 urls.py
app 下views.py
持续更新待续...
小白神器 - Django - 起步的更多相关文章
- 1.1 Django起步
1.1 Django起步 1.1.1. Django简介 Django开发框架(简称Django)诞生的时间是2003年的金秋时节,美国有两位程序员Adrian Holovaty和Simon ...
- 小白神器 - 一篇博客学会HTML
小白神器 - 一篇博客学会HTML 一. 简介 1. HTML 定义 htyper text markup language 即超文本标记语言. 超文本: 就是指页面内可以包含图片.链接,甚至音乐. ...
- 49.Django起步学习
django起步 django安装 pip install django==2.0.4(版本号) pip install django 默认安装最新版本 创建项目 django-admin start ...
- 小白学习django第一站-环境配置
Django简单来说就是用Python开发的一个免费开源的Web框架 使用Django,使你能够以最小的代价构建和维护高质量的Web应用. 开搞!!! 工具准备: linux(ubuntu) + py ...
- 小白学习django第六站-http相关
请求与相应 HttpRequest对象API def home(request): print('path:', request.path) print('mothod:', request.meth ...
- 小白学习django第五站-简易案例
首先在setting.py文件中编写数据库配置内容 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': ' ...
- 小白学习django第四站-关联数据库
使用mysql连接django首先要配置好相关环境 首先在setting.py配置数据库信息(需要现在mysql中创建一个数据库) 在setting.py那个目录的__init__.py文件中写入 之 ...
- 小白学习django第三站-自定义过滤器及标签
要使用自定义过滤器和标签,首先要设置好目录结构 现在项目目录下建立common的python包 再将common加入到setting.py中的INSTALLED_APP列表中 在common创建目录t ...
- 小白学习django第二站-模版配置
上一站说道app创建,接下来我们来配置app的url路由 首先需要到setting.py中添加book这个app, 再到django_test文件里的urls添加路由 include() : 这个函数 ...
随机推荐
- 【bzoj1082】栅栏[SCOI2005]
显然我们取的肯定是前ans块木板.然后砍的木材也应该是从小到大砍(如果小的木材可以满足条件,就一定不会去动大的木材) 所以两遍排序. 二分答案. 然后对于要取的每块木板,我们搜索它是在第x块木板上砍下 ...
- pygame save that Stream as video output.
python - how to save pygame camera as video output - Stack Overflow https://stackoverflow.com/quest ...
- C#在WinForm中使用WebKit传递js对象实现与网页交互的方法
这篇文章主要介绍了C#在WinForm中使用WebKit传递js对象实现与网页交互的方法,涉及针对WebBroswer控件及WebKit控件的相关使用技巧,需要的朋友可以参考下 本文实例讲述了C#在W ...
- createrepo
[root@iio enp]# createrepo -g /enp/comps.xml .Spawning worker 0 with 1362 pkgsWorkers FinishedSaving ...
- Scala 返回多个值
class A{ var c var d def return={ (c,d,"soyo") //以元组形式返回 }}调用: val s=new A var(a1,a2,a3)=s ...
- AngularJS过滤器filter-保留小数-渲染页面-小数点-$filter
AngularJS 保留小数 默认是保留3位 固定的套路是 {{deom | number:4}} 意思就是保留小数点 的后四位 在渲染页面的时候 加入这儿个代码 用来精确浮点数,指定小数点 ...
- [Apple开发者帐户帮助]九、参考(5)支持的功能(tvOS)
tvOS应用程序可用的功能取决于您的程序成员身份. 能力 ADP 企业 Apple开发者 应用程序组 相关域名 背景模式 数据保护 游戏中心 游戏控制器 HomeKit iCloud:Cl ...
- redis-缓存穿透,缓存雪崩,缓存击穿,并发竞争
目录 缓存穿透 定义 解决方案 利用互斥锁 采用异步更新策略 使用布隆过滤器 空置缓存 缓存雪崩 定义 解决方案 给缓存的加一个随机失效时间 使用互斥锁 双缓存策略 缓存击穿 定义 解决方案 使用互斥 ...
- .net 必看书籍1
我们2个网站运营群,有很多技术高手,同时也有大部分技术新人,如何从传统asp转到.net,从传统table转到div+css布局,从传统技术转到ajax,从小型程序转到高性能并发的大型程序,我花了2小 ...
- 安卓UI自适应性
出于安卓的碎片化原因,针对不同屏幕大小,最好是做到以下几点: 1.能用相对布局的就不用绝对布局,尽量使用权重,weight设置,相对布局和线性布局同条件情况下,优先选线性布局 2.在res目录下创建不 ...