djangohtml
- 路由系統:url.pypython
- 視圖函數:views.pymysql
- 模板引擎渲染sql
- HttpResonse(字符串)數據庫
- render(request,’index.html’) 渲染html給客戶端django
- 數據庫操做:models.py瀏覽器
小例子:實現數據的基本增刪改查(CURD)服務器
1. 數據庫設計cookie
id hostname ip port statussession
2.實現功能
a.預備階段
建立project :django-admin startproject mysite
建立app:cd mysite -----> python manager.py startapp app01
配置模板路徑:settings.py -----> TEMPLATE
'DIRS': [os.path.join(BASE_DIR, 'templates')]
配置靜態文件:settings.py -----> STATICFILES
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'static')
)
b.請求URL----->def
c.views:數據庫獲取數據
詳細步驟以下:
- 字段:表的列
具體以下:
from django.db import models class UserInfo(models.Model): nid = models.AutoField(primary_key=True) #自增主鍵 username = models.CharField(max_length=32) #最大字符長度建立 pwd = models.CharField(max_length=64) age = models.IntegerField()
開始生成表:
D:\project\day19>python manage.py makemigrations
D:\project\day19>python manage.py migrate
前提:要註冊app的名字(settings.py裏註冊)
注意事項:
若是鏈接mysql的話要手動建立數據庫
修改settings.py下的database字段:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbname', 'USER': 'root', 'PASSWORD': 'xxx', 'HOST': '', 'PORT': '', } }
還須要修改__init__.py文件(project下的)
import pymysql pymysql.install_as_MySQLdb()
url配置:
views配置
models配置:
server.html配置
靜態路由:
url(r'^add_user$', views.add_user),
動態路由:
url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user),url(r'^edit_user_new-(?P<nnid>\d+).html$', views.edit_user,name='mmm'),{% url 'mmm' nnid=obj.nid %} =====> edit_user_new-1.html多項目路由配置:主urls配置from django.conf.urls import url from django.conf.urls import include from django.contrib import admin urlpatterns = [ url(r'^app01/',include('app01.urls')), url(r'^app02/',include('app01.urls')), url(r'^app03/',include('app01.urls')), ]從urls.py(須要建立)from django.conf.urls import url from django.conf.urls import include from django.contrib import admin from app03 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^test', views.test), ]
獲取請求信息:
request.POST
request.GET
request.FILES
request.method
響應結果:
return HttpReponse(..)
return render(request,'path/a.html',{})
return redirect('http://www.baidu.com')
1. 類 --> 數據庫的表
字段 --> 列
對象 --> 一行數據
class UserInfo(models.Model):
nid = models.AutoField(primary_key=True)
username = models.CharField(max_length=32)
pwd = models.CharField(max_length=64)
age = models.IntegerField()
2. 根據app的models.py生成數據庫表
python manage.py makemigrations
python manage.py migrate
PS: settings註冊app名字
注意:
MySQL
- 手動建立庫名
- settings.py 中配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'dbname',
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': '',
'PORT': '',
}
}
- Django默認連接MySQL:
- MySqlDB
- pymysql
在配置目錄的init.py中:
import pymysql
pymysql.install_as_MySQLdb()
3. 數據庫基本操做
a. 查
models.tb.objects.all()
models.tb.objects.filter(nid=1)
models.tb.objects.filter(nid=1).first()
b. 增
models.tb.objects.create(...)
obj = models.tb(...)
obj.save()
c. 刪
models.tb.objects.all().delete()
models.tb.objects.filter(nid=1).delete()
d. 改
models.tb.objects.all().update(...)
models.tb.objects.filter(nid=1).update(...)
特殊規則:
- 1
{{k1}}
- 2
{% if a == 123 %}
{% else %}
{% endif %}
- 3
{% for item in LIST %}
{{item}}
{% endfor %}
- 4
# 索引:字典.k1 列表.1
- 5.自定義模板方法
- filter: 在if條件中作條件時
- simple_tag: 在頁面僅顯示內容時
- 6. extends
- 模板的繼承
- 7. include
- 導入公共組件
- 是用戶瀏覽器上的一個鍵值對
- 設置超時時間
利用cookie可實現:
- 登陸驗證
- 頁面顯示條數
- 拖動位置..
兩大忌諱:
- 敏感信息
- 簡單
- 放置在服務器端的鍵值對 session = { 'asdfasdfasd': {'username':'hailong'}, 'asdfasdfasdf': {username:'feinikesi'}, }