Django -----虚拟环境、服务器、创建项目、创建webApp,model,和注册model
2017-10-13 09:09
781 查看
内容一:虚拟环境、服务器、创建项目、创建webApp,model,和注册model
pre:安装虚拟环境
Pip3 install virtualenv
1.创建虚拟环境
Python3 -m venv ll_env
2.激活虚拟环境
source ll_env/bin/activate(关闭是deactivate)
3.在虚拟环境下安装Django
Pip3 install Django
4.在django中创建项目,创建应用程序
django-admin.py
startproject learning_log .
5.数据库迁移
Python3 manage.py
migrate
6.启动服务器
Python3 manage.py
runserver
7.创建应用程序(重新打开一个窗口)
Python3 manage.py
startapp learning_logs
8.应用中的models.py
from django.db import models
class Topic(mod
4000
els.Model):"""用户学习的主题"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""返回模型的字符串表示"""
return self.text
9.项目和应用关联,项目中setting.py
INSTALLED_APPS = (
'django.contrib.admin’,
'django.contrib.auth’,
'django.contrib.contenttypes’,
'django.contrib.sessions’,
'django.contrib.messages’,
'django.contrib.staticfiles’,
#
我的应用程序
'learning_logs',
)
10.数据库和应用关联迁移
Python3 manage.py
makemigrations learning_logs
11.应用这种迁移
Python3 manage.py
migrate
(每当需要修改“学习笔记”管理的数据时,都采取如下三个步骤:修改models.py;对learning_logs
调用makemigrations
;让Django迁移项目)
12.创建超级用户
Python3 manage.py
createsuperuser
13.向管理网站注册model,应用中admin.py
from django.contrib import admin
from learning_logs.models import Topic
admin.site.register(Topic)
http://localhost:8000/admin/
14.定义模型entry基本上就是将上边的过程再重复一遍
15.Django shell
//得到全部内容
❶
>>> from learning_logs.models import Topic
>>> Topic.objects.all()
//或者遍历一下
>>> topics = Topic.objects.all()>>> for topic in topics:
... print(topic.id,topic)
//获取属性
>>> t = Topic.objects.get(id=1)
>>> t.text
'Chess'
>>> t.date_added
datetime.datetime(2015, 5, 28, 4, 39, 11, 989446, tzinfo=<UTC>)
//查看与主题相关联的条目
t.entry_set.all()(外键关联)
内容二:创建网页,学习笔记主页
1.映射url
用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目需要哪些URL。主页的URL最重要,它是用户用来访问项目的基础URL。当前,基础
URL(http://localhost:8000/)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到“学习笔记”的主页。
打开项目主文件夹项目中的文件urls.py
from django.conf.urls import include, urlfrom django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'',
include('learning_logs.urls', namespace='learning_logs')),
]
2.在应用中创建urls.py
"""定义learning_logs的URL模式"""from
django.conf.urls import urlfrom . import views
urlpatterns = [
#主页
url(r'^$', views.index, name='index'),
]
3.编写视图
应用中views.py,这个文件只导入了函数render()
,它根据视图提供的数据渲染响应
from django.shortcuts import render
def index(request):
"""学习笔记的主页"""
return
render(request, 'learning_logs/index.html')
4.编写模版
模版继承父视图:base.html
在文件夹learning_logs中新建一个文件夹,并将其命名为templates。在文件夹templates中,再新建一个文件夹,并将其命名为learning_logs。这好像有点多余(我们在文件夹learning_logs中创建了文件夹templates,又在这个文件夹中创建了文件夹learning_logs),但建立了Django能够明确解读的结构,即便项目很大,包含很多应用程序亦如此。在最里面的文件夹learning_logs中,新建一个文件,并将其命名为base.html,再在这个文件中编写如下代码:
<p>
❶
<a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>
❷
{% block content %}{% endblock content %}
模板标签
,它是用大括号和百分号({% %}
)表示的。模板标签是一小段代码,生成要在网页中显示的信息。在这个实例中,模板标签{% url 'learning_logs:index' %}
生成一个URL,该URL与learning_logs/urls.py中定义的名为index
的URL模式匹配(见❶)。在这个示例中,learning_logs
是一个命名空间 ,而index
是该命名空间中一个名称独特的URL模式
或者锚标签<a href="link_url">link text</a>
模版继承子模版:index.html
{% extends "learning_logs/base.html" %}
❷
{% block content %}
<p>Learning Log helps you keep track of your learning, for any topic you'relearning about.</p>
❸
{% endblock content %}
Eg:重复,编写模版:显示特定主题的界面http://localhost:8000/topics/1/
(1)url模式
earning_logs/urls.py中
urlpatterns = [
--snip--
#
特定主题的详细页面,url函数的三个参数:第一个是适配的url,也就是请求的地址,第二个是和视图建立联系,第三个给url起个别名
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic’),
]
(2)视图
views.py
#
❶
def topic(request, topic_id):
"""显示单个主题及其所有的条目"""
❷
topic = Topic.objects.get(id=topic_id)
❸
entries = topic.entry_set.order_by('-date_added')
❹
context = {'topic': topic, 'entries': entries}
❺
return render(request, 'learning_logs/topic.html', context)
(3)模版
topic.html
{% extends 'learning_logs/base.html' %}
{% block content %}
<p>Topic: {{ topic }}</p>
<p>Entries:</p>
<ul>
{% for entry in entries %}
<li>
<p>{{ entry.date_added|date:'M d, Y H:i' }}</p><p>{{ entry.text|linebreaks
}}</p>
</li>
{% empty %}
<li>
There are no entries for this topic yet.
</li>
{% endfor %}
</ul>
{% endblock content %}
(4)链接调用,调用前边三个步骤写好的东西
我们需要修改模板topics.html
--snip--
{% for topic in topics %}
<li>
<a href="{% url 'learning_logs:topic'
topic.id
%}">{{ topic }}</a>
</li>
{% empty %}
--snip--
pre:安装虚拟环境
Pip3 install virtualenv
1.创建虚拟环境
Python3 -m venv ll_env
2.激活虚拟环境
source ll_env/bin/activate(关闭是deactivate)
3.在虚拟环境下安装Django
Pip3 install Django
4.在django中创建项目,创建应用程序
django-admin.py
startproject learning_log .
5.数据库迁移
Python3 manage.py
migrate
6.启动服务器
Python3 manage.py
runserver
7.创建应用程序(重新打开一个窗口)
Python3 manage.py
startapp learning_logs
8.应用中的models.py
from django.db import models
class Topic(mod
4000
els.Model):"""用户学习的主题"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""返回模型的字符串表示"""
return self.text
9.项目和应用关联,项目中setting.py
INSTALLED_APPS = (
'django.contrib.admin’,
'django.contrib.auth’,
'django.contrib.contenttypes’,
'django.contrib.sessions’,
'django.contrib.messages’,
'django.contrib.staticfiles’,
#
我的应用程序
'learning_logs',
)
10.数据库和应用关联迁移
Python3 manage.py
makemigrations learning_logs
11.应用这种迁移
Python3 manage.py
migrate
(每当需要修改“学习笔记”管理的数据时,都采取如下三个步骤:修改models.py;对learning_logs
调用makemigrations
;让Django迁移项目)
12.创建超级用户
Python3 manage.py
createsuperuser
13.向管理网站注册model,应用中admin.py
from django.contrib import admin
from learning_logs.models import Topic
admin.site.register(Topic)
http://localhost:8000/admin/
14.定义模型entry基本上就是将上边的过程再重复一遍
15.Django shell
//得到全部内容
❶
>>> from learning_logs.models import Topic
>>> Topic.objects.all()
//或者遍历一下
>>> topics = Topic.objects.all()>>> for topic in topics:
... print(topic.id,topic)
//获取属性
>>> t = Topic.objects.get(id=1)
>>> t.text
'Chess'
>>> t.date_added
datetime.datetime(2015, 5, 28, 4, 39, 11, 989446, tzinfo=<UTC>)
//查看与主题相关联的条目
t.entry_set.all()(外键关联)
内容二:创建网页,学习笔记主页
1.映射url
用户通过在浏览器中输入URL以及单击链接来请求网页,因此我们需要确定项目需要哪些URL。主页的URL最重要,它是用户用来访问项目的基础URL。当前,基础
URL(http://localhost:8000/)返回默认的Django网站,让我们知道正确地建立了项目。我们将修改这一点,将这个基础URL映射到“学习笔记”的主页。
打开项目主文件夹项目中的文件urls.py
from django.conf.urls import include, urlfrom django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'',
include('learning_logs.urls', namespace='learning_logs')),
]
2.在应用中创建urls.py
"""定义learning_logs的URL模式"""from
django.conf.urls import urlfrom . import views
urlpatterns = [
#主页
url(r'^$', views.index, name='index'),
]
3.编写视图
应用中views.py,这个文件只导入了函数render()
,它根据视图提供的数据渲染响应
from django.shortcuts import render
def index(request):
"""学习笔记的主页"""
return
render(request, 'learning_logs/index.html')
4.编写模版
模版继承父视图:base.html
在文件夹learning_logs中新建一个文件夹,并将其命名为templates。在文件夹templates中,再新建一个文件夹,并将其命名为learning_logs。这好像有点多余(我们在文件夹learning_logs中创建了文件夹templates,又在这个文件夹中创建了文件夹learning_logs),但建立了Django能够明确解读的结构,即便项目很大,包含很多应用程序亦如此。在最里面的文件夹learning_logs中,新建一个文件,并将其命名为base.html,再在这个文件中编写如下代码:
<p>
❶
<a href="{% url 'learning_logs:index' %}">Learning Log</a>
</p>
❷
{% block content %}{% endblock content %}
模板标签
,它是用大括号和百分号({% %}
)表示的。模板标签是一小段代码,生成要在网页中显示的信息。在这个实例中,模板标签{% url 'learning_logs:index' %}
生成一个URL,该URL与learning_logs/urls.py中定义的名为index
的URL模式匹配(见❶)。在这个示例中,learning_logs
是一个命名空间 ,而index
是该命名空间中一个名称独特的URL模式
或者锚标签<a href="link_url">link text</a>
模版继承子模版:index.html
{% extends "learning_logs/base.html" %}
❷
{% block content %}
<p>Learning Log helps you keep track of your learning, for any topic you'relearning about.</p>
❸
{% endblock content %}
Eg:重复,编写模版:显示特定主题的界面http://localhost:8000/topics/1/
(1)url模式
earning_logs/urls.py中
urlpatterns = [
--snip--
#
特定主题的详细页面,url函数的三个参数:第一个是适配的url,也就是请求的地址,第二个是和视图建立联系,第三个给url起个别名
url(r'^topics/(?P<topic_id>\d+)/$', views.topic, name='topic’),
]
(2)视图
views.py
#
❶
def topic(request, topic_id):
"""显示单个主题及其所有的条目"""
❷
topic = Topic.objects.get(id=topic_id)
❸
entries = topic.entry_set.order_by('-date_added')
❹
context = {'topic': topic, 'entries': entries}
❺
return render(request, 'learning_logs/topic.html', context)
(3)模版
topic.html
{% extends 'learning_logs/base.html' %}
{% block content %}
<p>Topic: {{ topic }}</p>
<p>Entries:</p>
<ul>
{% for entry in entries %}
<li>
<p>{{ entry.date_added|date:'M d, Y H:i' }}</p><p>{{ entry.text|linebreaks
}}</p>
</li>
{% empty %}
<li>
There are no entries for this topic yet.
</li>
{% endfor %}
</ul>
{% endblock content %}
(4)链接调用,调用前边三个步骤写好的东西
我们需要修改模板topics.html
--snip--
{% for topic in topics %}
<li>
<a href="{% url 'learning_logs:topic'
topic.id
%}">{{ topic }}</a>
</li>
{% empty %}
--snip--
相关文章推荐
- Django开发个人博客网站——28、服务器centos7创建虚拟环境
- Django笔记——使用Anaconda创建虚拟环境并搭建Django项目
- windows建立Django项目(建立虚拟环境,安装virtualenv,安装Django,创建项目)
- django创建虚拟环境、自定义用户、用户拦截以及项目的搭建
- 如何在虚拟环境中创建django项目
- Django创建项目及虚拟环境搭建
- windows 下的Python虚拟环境(vitrualen)pycharm创建Django项目
- 虚拟环境下Django创建、运行项目
- 使用python虚拟环境创建flask项目
- linux下配置python环境 django创建helloworld项目
- Web开发、测试环境搭建(LAMP、SVN服务器、Laravel项目创建)
- Django环境配置和测试项目创建
- django virtualenv 创建虚拟环境
- Django1.5实战第一步之搭建环境,创建工程,运行开发服务器
- 从写项目到部署linux服务器全过程-MyEclipse创建Maven web项目名后缀会有Maven Webapp
- django项目培训站-01-环境配置-目标是项目可运行-虚拟环境安装与配置
- Django项目开发举例之创建开发环境(1)
- 【django】搭建博客教程(1)——环境搭建,项目创建及初步测试
- Window环境下Python和Django的安装,以及项目的创建
- django学习笔记(二):Django开发项目的创建(开发环境而非正式发布环境)