问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何创建一个Django网站

发布网友 发布时间:2022-04-21 08:57

我来回答

2个回答

懂视网 时间:2022-04-09 01:21

-*- coding: UTF-8 -*- from django.conf.urls import patterns, include, url urlpatterns = patterns(‘blog.views‘, url(r‘^index/$‘, ‘index‘), url(r‘^time/$‘, ‘time‘), url(r‘^shengfen/$‘, ‘shengfen‘), #url(r‘^foo/(d{4})/$‘, ‘foo‘), #表示接收4个数字,#w+接收至少一个字母 url(r‘^foo/(d{4})/(w+)/$‘,"foo"), url(r‘^bar/(?P<id>d{4})/(?P<name>w+)/$‘,‘bar‘),#强制规定bar(request,id,name)处的参数必须为id和name url(r‘^student_list/$‘,‘student_list‘),#当浏览器打开此网址时,输出html页面的结果(html页面定义了从数据库抓取数据的代码) )

 

3、配置views.PY文件

 

# Create your views here.
#coding:utf-8
from django.http import HttpResponse
import datetime
#导入templates文件所需导入库
from django.template import loader,Context
#引入models模块中的Student等类
from blog.models import *


def student_list(request):
 t=loader.get_template("student_list.html")
 studentList = Student.objects.all() # 等价于 select * from student
 c=Context({"studentList":studentList})
 return HttpResponse(t.render(c))

class Person():

 def __init__(self,name,age,sex):
 self.name=name
 self.age=age
 self.sex=sex

 def myMethod(self):
 return "get it"

def time(request):
 t = loader.get_template("time.html")
 myId = request.GET.get("id")
 myName = request.GET.get("name")#获取传递的name的value值
 user = {"today": datetime.datetime.now(),"id":myId,"name":myName}
 c = Context(user)
 return HttpResponse(t.render(c))

def foo(request,myID,myName):
 t = loader.get_template("foo.html")
 user = {"today": datetime.datetime.now(),"id":myID,"name":myName}
 c = Context(user)
 return HttpResponse(t.render(c))

def bar(request,id,name):
 t = loader.get_template("bar.html")
 user = {"today": datetime.datetime.now(),"id":id,"name":name}
 c = Context(user)
 return HttpResponse(t.render(c))

def shengfen(request):
 t = loader.get_template("shengfen.html")
 user = {"shengfen":"湖北省恩施市"}
 c = Context(user)
 return HttpResponse(t.render(c))

def index(request):
 #加载器,加载模板
 t=loader.get_template("index.html")

 # django之创建第4-1个项目-Dict形式
 user = {"name": "xiaodeng", "sex": "male", "age": 28,"today":datetime.datetime.now()}
 c = Context({"test": user}) # 在这里test位变量,user为变量的值
 return HttpResponse(t.render(c))

 

 

4、创建student_list.html文件

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>

<li>遍历数据库student中的数据</li>
{% for student in studentList %}
 <li>{{student}}</li> <!--Student objec-->
{% endfor %}

<br>
{% for student in studentList %}
 <li>{{student.name}},{{student.age}}</li>
{% endfor %}

</body>
</html>

 

5、启动服务器,manage.py runserver

6、打开 http://127.0.0.1:8000/blog/student_list/

7、百度云盘:django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

django之创建第8-1个项目-数据库之增删改查/数据库数据显示在html页面

标签:

热心网友 时间:2022-04-08 22:29

本文演示如何创建一个简单的 django 网站,使用的 django 版本为1.7。

1. 创建项目
运行下面命令就可以创建一个 django 项目,项目名称叫 mysite :

$ django-admin.py startproject mysite
创建后的项目目录如下:

mysite
├── manage.py
└── mysite
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py

1 directory, 5 files
说明:

__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。 这是一个空文件,一般你不需要修改它。
manage.py :一种命令行工具,允许你以多种方式与该 Django 项目进行交互。 键入python manage.py help,看一下它能做什么。 你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。
settings.py :该 Django 项目的设置或配置。
urls.py:Django项目的URL路由设置。目前,它是空的。
wsgi.py:WSGI web 应用服务器的配置文件。更多细节,查看 How to deploy with WSGI
接下来,你可以修改 settings.py 文件,例如:修改 LANGUAGE_CODE、设置时区 TIME_ZONE

SITE_ID = 1

LANGUAGE_CODE = 'zh_CN'

TIME_ZONE = 'Asia/Shanghai'

USE_TZ = True
上面开启了 [Time zone](https://docs.djangoproject.com/en/1.7/topics/i18n/timezones/) 特性,需要安装 pytz:

$ sudo pip install pytz
2. 运行项目
在运行项目之前,我们需要创建数据库和表结构,这里我使用的默认数据库:

$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, auth, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK
然后启动服务:

$ python manage.py runserver
你会看到下面的输出:

Performing system checks...

System check identified no issues (0 silenced).
January 28, 2015 - 02:08:33
Django version 1.7.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
这将会在端口8000启动一个本地服务器, 并且只能从你的这台电脑连接和访问。 既然服务器已经运行起来了,现在用网页浏览器访问 http://127.0.0.1:8000/。你应该可以看到一个令人赏心悦目的淡蓝色 Django 欢迎页面它开始工作了。

你也可以指定启动端口:

$ python manage.py runserver 8080
以及指定 ip:

$ python manage.py runserver 0.0.0.0:8000
3. 创建 app
前面创建了一个项目并且成功运行,现在来创建一个 app,一个 app 相当于项目的一个子模块。

在项目目录下创建一个 app:

$ python manage.py startapp polls
如果操作成功,你会在 mysite 文件夹下看到已经多了一个叫 polls 的文件夹,目录结构如下:

polls
├── __init__.py
├── admin.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py

1 directory, 6 files
4. 创建模型
每一个 Django Model 都继承自 django.db.models.Model
在 Model 当中每一个属性 attribute 都代表一个 database field
通过 Django Model API 可以执行数据库的增删改查, 而不需要写一些数据库的查询语句
打开 polls 文件夹下的 models.py 文件。创建两个模型:

import datetime
from django.db import models
from django.utils import timezone

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

def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
然后在 mysite/settings.py 中修改 INSTALLED_APPS 添加 polls:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
在添加了新的 app 之后,我们需要运行下面命令告诉 Django 你的模型做了改变,需要迁移数据库:

$ python manage.py makemigrations polls
你会看到下面的输出日志:

Migrations for 'polls':
0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice
你可以从 polls/migrations/0001_initial.py 查看迁移语句。

运行下面语句,你可以查看迁移的 sql 语句:

$ python manage.py sqlmigrate polls 0001
输出结果:

BEGIN;
CREATE TABLE "polls_choice" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL);
CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(200) NOT NULL, "pub_date" datetime NOT NULL);
CREATE TABLE "polls_choice__new" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "choice_text" varchar(200) NOT NULL, "votes" integer NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id"));
INSERT INTO "polls_choice__new" ("choice_text", "votes", "id") SELECT "choice_text", "votes", "id" FROM "polls_choice";
DROP TABLE "polls_choice";
ALTER TABLE "polls_choice__new" RENAME TO "polls_choice";
CREATE INDEX polls_choice_7aa0f6ee ON "polls_choice" ("question_id");

COMMIT;
你可以运行下面命令,来检查数据库是否有问题:

$ python manage.py check
再次运行下面的命令,来创建新添加的模型:

$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, contenttypes, polls, auth, sessions
Running migrations:
Applying polls.0001_initial... OK
总结一下,当修改一个模型时,需要做以下几个步骤:

修改 models.py 文件
运行 python manage.py makemigrations 创建迁移语句
运行 python manage.py migrate,将模型的改变迁移到数据库中
你可以阅读 django-admin.py documentation,查看更多 manage.py 的用法。

创建了模型之后,我们可以通过 Django 提供的 API 来做测试。运行下面命令可以进入到 python shell 的交互模式:

$ python manage.py shell
下面是一些测试:

>>> from polls.models import Question, Choice # Import the model classes we just wrote.

# No questions are in the system yet.
>>> Question.objects.all()
[]

# Create a new Question.
# Support for time zones is enabled in the default settings file, so
# Django expects a datetime with tzinfo for pub_date. Use timezone.now()
# instead of datetime.datetime.now() and it will do the right thing.
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())

# Save the object into the database. You have to call save() explicitly.
>>> q.save()

# Now it has an ID. Note that this might say "1L" instead of "1", depending
# on which database you're using. That's no biggie; it just means your
# database backend prefers to return integers as Python long integer
# objects.
>>> q.id
1

# Access model field values via Python attributes.
>>> q.question_text
"What's new?"
>>> q.pub_date
datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)

# Change values by changing the attributes, then calling save().
>>> q.question_text = "What's up?"
>>> q.save()

# objects.all() displays all the questions in the database.
>>> Question.objects.all()
[<Question: Question object>]
打印所有的 Question 时,输出的结果是 [<Question: Question object>],我们可以修改模型类,使其输出更为易懂的描述。修改模型类:

from django.db import models

class Question(models.Model):
# ...
def __str__(self): # __unicode__ on Python 2
return self.question_text

class Choice(models.Model):
# ...
def __str__(self): # __unicode__ on Python 2
return self.choice_text
接下来继续测试:

>>> from polls.models import Question, Choice

# Make sure our __str__() addition worked.
>>> Question.objects.all()
[<Question: What's up?>]

# Django provides a rich database lookup API that's entirely driven by
# keyword arguments.
>>> Question.objects.filter(id=1)
[<Question: What's up?>]
>>> Question.objects.filter(question_text__startswith='What')
[<Question: What's up?>]

# Get the question that was published this year.
>>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
<Question: What's up?>

# Request an ID that doesn't exist, this will raise an exception.
>>> Question.objects.get(id=2)
Traceback (most recent call last):
...
DoesNotExist: Question matching query does not exist.

# Lookup by a primary key is the most common case, so Django provides a
# shortcut for primary-key exact lookups.
# The following is identical to Question.objects.get(id=1).
>>> Question.objects.get(pk=1)
<Question: What's up?>

# Make sure our custom method worked.
>>> q = Question.objects.get(pk=1)

# Give the Question a couple of Choices. The create call constructs a new
# Choice object, does the INSERT statement, adds the choice to the set
# of available choices and returns the new Choice object. Django creates
# a set to hold the "other side" of a ForeignKey relation
# (e.g. a question's choice) which can be accessed via the API.
>>> q = Question.objects.get(pk=1)

# Display any choices from the related object set -- none so far.
>>> q.choice_set.all()
[]

# Create three choices.
>>> 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='Just hacking again', votes=0)

# Choice objects have API access to their related Question objects.
>>> c.question
<Question: What's up?>

# And vice versa: Question objects get access to Choice objects.
>>> q.choice_set.all()
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
>>> q.choice_set.count()
3

# The API automatically follows relationships as far as you need.
# Use double underscores to separate relationships.
# This works as many levels deep as you want; there's no limit.
# Find all Choices for any question whose pub_date is in this year
# (reusing the 'current_year' variable we created above).
>>> Choice.objects.filter(question__pub_date__year=current_year)
[<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]

# Let's delete one of the choices. Use delete() for that.
>>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()
>>>
上面这部分测试,涉及到 django orm 相关的知识,详细说明可以参考 Django中的ORM。

5. 管理 admin
Django有一个优秀的特性, 内置了Django admin后台管理界面, 方便管理者进行添加和删除网站的内容.

新建的项目系统已经为我们设置好了后台管理功能,见 mysite/settings.py:

INSTALLED_APPS = (
'django.contrib.admin', #默认添加后台管理功能
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mysite',
)
同时也已经添加了进入后台管理的 url, 可以在 mysite/urls.py 中查看:

url(r'^admin/', include(admin.site.urls)), #可以使用设置好的url进入网站后台
接下来我们需要创建一个管理用户来登录 admin 后台管理界面:

$ python manage.py createsuperuser
Username (leave blank to use 'june'): admin
Email address:
Password:
Password (again):
Superuser created successfully.
总结
最后,来看项目目录结构:

mysite
├── db.sqlite3
├── manage.py
├── mysite
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── wsgi.py
├── polls
│ ├── __init__.py
│ ├── admin.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── polls
│ │ ├── detail.html
│ │ ├── index.html
│ │ └── results.html
│ ├── tests.py
│ ├── urls.py
│ ├── views.py
└── templates
└── admin
└── base_site.htm
通过上面的介绍,对 django 的安装、运行以及如何创建视 图和模型有了一个清晰的认识,接下来就可以深入的学习 django 的自动化测试、持久化、中间件、国 际 化等知识。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
其实我很在乎你的句子(83句) 手术疤痕修复方法 宝宝大便有血丝和粘液怎么办? 宝宝的大便有粘液还带有血丝是怎么回事? 宝宝拉血丝黏液便怎么办 驴胶冲剂是九芝堂好还是山东阿胶 阿胶冲剂哪个牌子好李湘代言 王利明躬耕桃李 革故鼎新 ...总论研究》、《物权法研究》、《合同法研究 四卷本》、《合同法疑... 奔驰GLE新款最低多少钱可以落地?奔驰GLE官方价 用Django,web.py,Tornado开发网站的优势在哪 Django框架是什么? django webuploader文件 404 Not Found 如何创建一个Django网站 python django 做了个web ,在登录界面我想直接调用系统的login模板,可是每次登录成功之后就跳到 如何用python做web开发 django环境配置 政治时事评论100字10篇 求10篇新闻评论稿 近期新闻20则,加简短评论 10则短新闻 20字以内 求10条时政热点新闻 没少于50字 姹怎么读 2021热点新闻及点评有哪些? 10条时政新闻和评论 求10条简短的最近的新闻评论 2020年实时热的点政治新闻评论? 9月新闻摘要,要有点评!(10篇左右) 2020最近的新闻大事10条? 时政点评2020十篇是什么? 什么是django? django 框架开发的网站有哪些? Django是什么 web3与Django的区别? django web适合什么软件来开发 django web开发python用什么版本最好 要调试一个用java写的后端,django写的前端的web应用应该怎么调试 python+django怎么实现实时看log的web端 TCL全生态HDR是什么原理? 《谁来帮帮我》教案反思 使用python创建web静态网站 什么是HDR技术 hdr实现的重要组成部分是什么 hdr格式的东西是什么,有什么用 HDR的方法 HDR模式和像素偏移(超解析)模式的区别? 相机上的HDR是什么意思? HDR的介绍 4K电视上的HDR技术到底是什么 能带来什么效果 HDR的名词解释