Python Console(1)Version Upgrade and Sample Router/ORM

122 篇文章 0 订阅
Python Console(1)Version Upgrade and Sample Router/ORM

My python version
>python -V
Python 2.7.13

Install pip
>wget https://bootstrap.pypa.io/get-pip.py
>pip -V
pip 9.0.1 from /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages (python 2.7)

Install django or upgrade django
>pip install django
>pip install -U Django

Check the django version
>python -m django --version
1.11

Install gunicorn
http://docs.gunicorn.org/en/latest/install.html
>pip install gunicorn
>pip install greenlet

Some more related settings are here
http://sillycat.iteye.com/blog/2117576

Create Project according to latest document and My old Blog
>django-admin startproject myconsole
This will create the project myconsole

Running the develop server
>python manage.py migrate
This will apply the database things for the existing modules

>python manage.py runserver

We can visit http://localhost:8000/ after that.

>python manage.py runserver 0:8000
This command will allow 0.0.0.0 to access my service.

Creating the Polls App
>python manage.py startapp polls

Write first view
polls/views.py
# -*- coding: utf-8 -*-from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
return HttpResponse("We are in the index page.")

pools/urls.py
from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^$', views.index, name='index'),
]

myconsole/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
url(r'^polls/', include('polls.urls')),
url(r'^admin/', admin.site.urls),
]

And this URL will open our page
http://localhost:8000/polls/

Go on with Sample https://docs.djangoproject.com/en/1.11/intro/tutorial02/
Creating models
View and check the sqlite3 file
http://sqlitebrowser.org/

polls/models.py
# -*- coding: utf-8 -*-from __future__ import unicode_literals

from django.db import models

class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')

class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)

Add installed apps in my console/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

>python manage.py makemigrations polls
That will generate the SQL related things.

>python manage.py sqlmigrate polls 0001
This will show your the SQL

Check issues
>python manage.py check
System check identified no issues (0 silenced).

>python manage.py migrate
We will have all the tables setting up.

Enter the shell
>python manage.py shell

Database APIs in the shell
>>> from polls.models import Question, Choice
>>> Question.objects.all();
>>> from django.utils import timezone
>>> q = Question(question_text="what's new?", pub_date=timezone.now())
>>> q.save()
>>> q.id
1
>>> q.pub_date
datetime.datetime(2017, 5, 5, 21, 52, 7, 152974, tzinfo=<UTC>)
>>> q.question_text="what's up?"
>>> q.save()

Add __str__ on the object
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - timezone.timedelta(days=1)


>>> from polls.models import Question, Choice
>>> Question.objects.all()
<QuerySet [<Question: what's up?>]>
>>> Question.objects.filter(id=1)
<QuerySet [<Question: what's up?>]>
>>> Question.objects.filter(question_text__startswith='what')
<QuerySet [<Question: what's up?>]>
>>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: what's up?>
>>> Question.objects.get(id=2)
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/db/models/query.py", line 379, in get
self.model._meta.object_name
DoesNotExist: Question matching query does not exist.

>>> q = Question.objects.get(pk=1)
>>> q.was_published_recently()
True

Create three choices.
>>> q.choice_set.all()
<QuerySet []>
>>> q.choice_set.create(choice_text='Not much', votes=0)
<Choice: Not much>
>>> q.choice_set.create(choice_text='The sky', votes=0)
<Choice: The sky>
>>> c = q.choice_set.create(choice_text='Hacking again', votes=0)
>>> c.question
<Question: what's up?>
>>> q.choice_set.all()
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Hacking again>]>
>>> q.choice_set.count()
3
>>> Choice.objects.filter(question__pub_date__year=current_year)
<QuerySet [<Choice: Not much>, <Choice: The sky>, <Choice: Hacking again>]>
>>> c = q.choice_set.filter(choice_text__startswith="Hacking')
File "<console>", line 1
c = q.choice_set.filter(choice_text__startswith="Hacking')
>>> c.delete()
(1, {u'polls.Choice': 1})
>>> q.choice_set.all()
<QuerySet [<Choice: Not much>, <Choice: The sky>]>

More documents
https://docs.djangoproject.com/en/1.11/topics/db/queries/

References:
https://docs.djangoproject.com/en/1.11/intro/tutorial01/

Python Lover
http://sillycat.iteye.com/blog/2116834
http://sillycat.iteye.com/blog/2116836
http://sillycat.iteye.com/blog/2117212
http://sillycat.iteye.com/blog/2117576

http://sillycat.iteye.com/blog/2188140
http://sillycat.iteye.com/blog/2243749
http://sillycat.iteye.com/blog/2243775
http://sillycat.iteye.com/blog/2244167
http://sillycat.iteye.com/blog/2244169
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值