Django回忆录
Django使用回憶:
1、安裝django:
pip install django==1.9
2、創建項目及應用:
django-admin startproject webdjango-admin startap blog 3、配置數據庫、二級url:
web/setting.py:INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','blog', ]...DATABASES = {'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),'ENGINE': 'django.db.backends.mysql','NAME':'test_blog','USER':'ahaii','PASSWORD':'123456','HOST':'','PORT':'',} }
web/urls.py: urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^blog/', include('blog.urls')), ]
blog/urls.py:from blog import viewsurlpatterns = [url(r'^$', views.index), ]
blog/views.py:from django.shortcuts import render,HttpResponse# Create your views here.def index(request):return HttpResponse('Hello Django')
4、創建數據庫模型:
blog/models.py:from django.db import models# Create your models here.class Article(models.Model):title = models.CharField(max_length=100)category = models.CharField(max_length=50,blank=True)date_time = models.DateTimeField(auto_now_add=True)content = models.TextField(blank=True,null=True)def __unicode__(self):return self.titleclass Meta:ordering = ['-date_time']
5、同步數據庫:
python manage.py makemigrations
python manage.py migrate
其中,makemigrations是掃描變動后在本地的app目錄下的migrations包里生成遷移用的代碼,但是并不會執行。migrate則是根據migrations包下的代碼操作數據庫,但并不檢查models的修改變動。所以更改models后應先makemigrations然后migrate。
6、創建超級用戶:
python manage.py createsuperuser
7、利用python shell交互模式操作數據庫:
python manage.py shell>>>from blog.models import Article >>>Article.objects.create(title='...',category='...',content='...')//插入數據 >>>Article.objects.all()//查詢所有記錄,返回列表 >>>Article.objects.get(id=1)//查詢第一條
>>>a=Article.objects.get(title='Car')
>>>a.content='The traffice is so busy!'//修改內容
>>>>a.save()//寫入數據庫
8、動態url:(獲取url中的參數)
blog/views.py: def detail(request,args):
post = Article.objects.all()[int(args)] //默認輸入為字符串,轉換為整型,列表索引
str = ('title=%s,category=%s,content=%s') %(post.title,post.category,post.content)
return HttpResponse(str)
blog/urls.py:urlpatterns = [url(r'^$', views.index),url(r'(?P<args>\d+)/$',views.detail)// \w+可匹配數字和字母 ]
9、使用模版:
web項目下創建templates/test.html,設置模版路徑:
web/setting: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',],},}, ]
templates/test.html:<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Just for test template</title><style>body{background-color: red;}strong{color:lightseagreen;}</style> </head> <body><h1>Hello Django</h1><strong>{{ time }}</strong> </body> </html>
blog/views:
from datetime import datetimedef template(request):return render(request,'test.html',{'time':datetime.now()})
blog/urls:urlpatterns = [url(r'template/$',views.template) ]
?
以上目錄結構:
web-||-blog|-manage.py|-templates|-web
?
話說Django數據庫操作中get和filter的區別:
1、get:從數據庫中找到匹配的一條,返回一個滿足查詢條件的對象。若沒有查到符合條件的數據,會發生錯誤。
2、filter:從數據庫中找到匹配的一條,返回一個滿足查詢條件的列表。若沒有查到符合條件的數據,會返回一個口列表[]。
轉載于:https://www.cnblogs.com/ahaii/p/6238129.html
總結
- 上一篇: TCP/IP协议三次握手与四次握手流程解
- 下一篇: Strusts2笔记7--国际化