2024-11-29 09:52:37
导读:今天首席CTO笔记来给各位分享关于django如何几率访问数点击数的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何独立使用django的数据库访问功能1.安装Django
[plain]viewplaincopy
cdDjango-1.4
pythonsetup.pyinstall
2.安装postgresql的客户端:
[plain]viewplaincopy
sudoapt-getinstall-ypostgresql-client-9.1python-psycopg2
3.新建project:
[plain]viewplaincopy
django-admin.pystartprojectmyproject
4.在myproject下新建app:
[plain]viewplaincopy
pythonmanage.pystartappmyapp
4.新增环境变量:
编辑/etc/profile文件,在末尾加入以下语句:
[plain]viewplaincopy
spanstyle="color:#FF0000;"exportPYTHONPATH=$PYTHONPATH:/home/yc/src/myproject
exportDJANGO_SETTINGS_MODULE=myproject.settings/span
5.
假设数据库已经由Django的另一个应用(名称为otherapp)建好,数据库类型是postgresql,名称为mydb,位于
192.168.1.23。见好的数据库中有一个表,名称是otherapp_user,则将otherapp/models.py拷贝到myapp
/models.py。
注意检查models.py下的classuser类的classMeta:部分,如果没有applabel标签,则要加上:app_label='otherapp'
再修改/home/yc/src/myproject下的settings.py文件,如下:
[plain]viewplaincopy
DATABASES={
'default':{
'ENGINE':'django.db.backends.postgresql_psycopg2',#Add'postgresql_psycopg2','mysql','sqlite3'or'oracle'.
'NAME':'mydb',#'vps2db_test1'Orpathtodatabasefileifusingsqlite3.
'USER':'postgres',#Notusedwithsqlite3.
'PASSWORD':'123',#Notusedwithsqlite3.
'HOST':'192.168.1.23',#Settoemptystringforlocalhost.Notusedwithsqlite3.
'PORT':'5432',#Settoemptystringfordefault.Notusedwithsqlite3.
}
}
[plain]viewplaincopy
INSTALLED_APPS=(
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'spanstyle="color:#FF0000;"myapp/span',
)
6.在myapp目录下编写测试程序
[python]viewplaincopy
frommodelsimportuser
if__name__=="__main__":
try:
u=user.objects.get(id=user_id)
exceptuser.DoesNotExist:
print"usernotexist)
returnNone
else:
returnu
求Django常用语法,接受get和post参数的方法1、首先登录CentOS7系统,打开终端,进入python3虚拟环境,创建工程djbd,在工程中创建app,命令如下。
2、在工程的settings.py文件,添加app信息,并在allowed_host中添加本机ip。
3、在工程的urls.py文件include进app的urls.py,viurls.pyurls.py文件如下。
4、在app中创建urls.py文件cd../bookviurls.py,并写代码如下。
5、然后运行django工程cd..pythonmanage.pyrunserver192.168.128.25:8000,最后的ip就是填入allowed_host的本机ip,在8000端口上运行。
6、然后打开POSTMAN,可以是局域网中任意台电脑,请求方式为POST,网址和body传入参数如下图。
7、最后控制台打印出提交的参数something,就完成了。
如何使用Django创建博客?如果您想开始写博客,又想使用功能强大的Web框架创建自己的博客,那么Django是您的最佳选择。目前该系列有14个教程,我仍在研究中,欢迎您给我更多的想法。
这些教程是:
为Django开发设置Vscode:在第一个视频中,您将学习如何在vscode文本编辑器上为Django建立开发环境。使用Django创建博客文章模型:该视频涵盖了为博客文章创建模型的所有细节,从标题,作者到标签。将富文本编辑器添加到Django项目:在这里,您将学习如何将富文本编辑器添加到表单或Django项目中的任何位置。
设计帖子页面:有关使用Bootstrap4设计详细帖子页面的快速教程。
创建详细信息帖子类视图:您将学习如何为博客帖子创建基于类的视图,它将允许您在自定义帖子页面的管理页面上使用自定义链接显示我们在管理页面中创建的帖子。
跟踪您的Django网站的访问者数量:我们将看到如何跟踪博客文章的访问量/浏览量。我们将使用一个工具,让您知道多少访客在您看到时看到您的帖子。另外,您将能够知道他们的IP地址和他们使用的用户代理。
在Django中添加要发布的评论:在本视频中,您将看到如何在博客应用中添加评论模型。因此,读者可以向您发送评论,这将很容易执行和管理。此外,您还将看到如何将注释计数添加到视图文件。
设计博客页面-引导程序:您将设计博客页面,其中将列出博客文章和其他元素。
Django博客列表视图:在本视频中,您将看到如何在博客页面上显示博客文章,我们将介绍如何通过在帖子模型中添加另一个属性来访问每个帖子的链接。此外,您还将看到如何在边栏中显示热门帖子和帖子类别。
Django3.1中的简单分页:此视频将仅介绍Django分页的下一个和上一个按钮。
Django搜索表单[带有Q对象的过滤器]:如何在Django博客网站中实现搜索功能
在Django中分页搜索结果:使用Bootstrap(CSS框架)创建简单的分页,然后将分页功能实现到Django搜索结果页面。
在详细信息帖子中添加类似的帖子小部件:将标记功能添加到我们的Django博客网站。
使用Django的简单用户身份验证系统:实现Django第三方应用程序,用户可以在其中注册,登录以及重设和更改密码。
如何解决Django1.8在migrate时失败1.创建项目
运行下面命令就可以创建一个django项目,项目名称叫mysite:
$django-admin.pystartprojectmysite
创建后的项目目录如下:
mysite
├──manage.py
└──mysite
├──__init__.py
├──settings.py
├──urls.py
└──wsgi.py
1directory,5files
说明:
__init__.py:让Python把该目录当成一个开发包(即一组模块)所需的文件。这是一个空文件,一般你不需要修改它。
manage.py:一种命令行工具,允许你以多种方式与该Django项目进行交互。键入pythonmanage.pyhelp,看一下它能做什么。你应当不需要编辑这个文件;在这个目录下生成它纯是为了方便。
settings.py:该Django项目的设置或配置。
urls.py:Django项目的URL路由设置。目前,它是空的。
wsgi.py:WSGIweb应用服务器的配置文件。更多细节,查看HowtodeploywithWSGI
接下来,你可以修改settings.py文件,例如:修改LANGUAGE_CODE、设置时区TIME_ZONE
SITE_ID=1
LANGUAGE_CODE='zh_CN'
TIME_ZONE='Asia/Shanghai'
USE_TZ=True
上面开启了[Timezone]()特性,需要安装pytz:
$sudopipinstallpytz
2.运行项目
在运行项目之前,我们需要创建数据库和表结构,这里我使用的默认数据库:
$pythonmanage.pymigrate
Operationstoperform:
Applyallmigrations:admin,contenttypes,auth,sessions
Runningmigrations:
Applyingcontenttypes.0001_initial...OK
Applyingauth.0001_initial...OK
Applyingadmin.0001_initial...OK
Applyingsessions.0001_initial...OK
然后启动服务:
$pythonmanage.pyrunserver
你会看到下面的输出:
Performingsystemchecks...
Systemcheckidentifiednoissues(0silenced).
January28,2015-02:08:33
Djangoversion1.7.1,usingsettings'mysite.settings'
Startingdevelopmentserverat
QuittheserverwithCONTROL-C.
这将会在端口8000启动一个本地服务器,并且只能从你的这台电脑连接和访问。既然服务器已经运行起来了,现在用网页浏览器访问。你应该可以看到一个令人赏心悦目的淡蓝色Django欢迎页面它开始工作了。
你也可以指定启动端口:
$pythonmanage.pyrunserver8080
以及指定ip:
$pythonmanage.pyrunserver0.0.0.0:8000
3.创建app
前面创建了一个项目并且成功运行,现在来创建一个app,一个app相当于项目的一个子模块。
在项目目录下创建一个app:
$pythonmanage.pystartapppolls
如果操作成功,你会在mysite文件夹下看到已经多了一个叫polls的文件夹,目录结构如下:
polls
├──__init__.py
├──admin.py
├──migrations
│└──__init__.py
├──models.py
├──tests.py
└──views.py
1directory,6files
4.创建模型
每一个DjangoModel都继承自django.db.models.Model
在Model当中每一个属性attribute都代表一个databasefield
通过DjangoModelAPI可以执行数据库的增删改查,而不需要写一些数据库的查询语句
打开polls文件夹下的models.py文件。创建两个模型:
importdatetime
fromdjango.dbimportmodels
fromdjango.utilsimporttimezone
classQuestion(models.Model):
question_text=models.CharField(max_length=200)
pub_date=models.DateTimeField('datepublished')
defwas_published_recently(self):
returnself.pub_date=timezone.now()-datetime.timedelta(days=1)
classChoice(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你的模型做了改变,需要迁移数据库:
$pythonmanage.pymakemigrationspolls
你会看到下面的输出日志:
Migrationsfor'polls':
0001_initial.py:
-CreatemodelChoice
-CreatemodelQuestion
-Addfieldquestiontochoice
你可以从polls/migrations/0001_initial.py查看迁移语句。
运行下面语句,你可以查看迁移的sql语句:
$pythonmanage.pysqlmigratepolls0001
输出结果:
BEGIN;
CREATETABLE"polls_choice"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"choice_text"varchar(200)NOTNULL,"votes"integerNOTNULL);
CREATETABLE"polls_question"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"question_text"varchar(200)NOTNULL,"pub_date"datetimeNOTNULL);
CREATETABLE"polls_choice__new"("id"integerNOTNULLPRIMARYKEYAUTOINCREMENT,"choice_text"varchar(200)NOTNULL,"votes"integerNOTNULL,"question_id"integerNOTNULLREFERENCES"polls_question"("id"));
INSERTINTO"polls_choice__new"("choice_text","votes","id")SELECT"choice_text","votes","id"FROM"polls_choice";
DROPTABLE"polls_choice";
ALTERTABLE"polls_choice__new"RENAMETO"polls_choice";
CREATEINDEXpolls_choice_7aa0f6eeON"polls_choice"("question_id");
COMMIT;
你可以运行下面命令,来检查数据库是否有问题:
$pythonmanage.pycheck
再次运行下面的命令,来创建新添加的模型:
$pythonmanage.pymigrate
Operationstoperform:
Applyallmigrations:admin,contenttypes,polls,auth,sessions
Runningmigrations:
Applyingpolls.0001_initial...OK
总结一下,当修改一个模型时,需要做以下几个步骤:
修改models.py文件
运行pythonmanage.pymakemigrations创建迁移语句
运行pythonmanage.pymigrate,将模型的改变迁移到数据库中
你可以阅读django-admin.pydocumentation,查看更多manage.py的用法。
创建了模型之后,我们可以通过Django提供的API来做测试。运行下面命令可以进入到pythonshell的交互模式:
$pythonmanage.pyshell
下面是一些测试:
frompolls.modelsimportQuestion,Choice#Importthemodelclasseswejustwrote.
#Noquestionsareinthesystemyet.
Question.objects.all()
[]
#CreateanewQuestion.
#Supportfortimezonesisenabledinthedefaultsettingsfile,so
#Djangoexpectsadatetimewithtzinfoforpub_date.Usetimezone.now()
#insteadofdatetime.datetime.now()anditwilldotherightthing.
fromdjango.utilsimporttimezone
q=Question(question_text="What'snew?",pub_date=timezone.now())
#Savetheobjectintothedatabase.Youhavetocallsave()explicitly.
q.save()
#NowithasanID.Notethatthismightsay"1L"insteadof"1",depending
#onwhichdatabaseyou'reusing.That'snobiggie;itjustmeansyour
#databasebackendpreferstoreturnintegersasPythonlonginteger
#objects.
q.id
1
#AccessmodelfieldvaluesviaPythonattributes.
q.question_text
"What'snew?"
q.pub_date
datetime.datetime(2012,2,26,13,0,0,775217,tzinfo=UTC)
#Changevaluesbychangingtheattributes,thencallingsave().
q.question_text="What'sup?"
q.save()
#objects.all()displaysallthequestionsinthedatabase.
Question.objects.all()
[Question:Questionobject]
打印所有的Question时,输出的结果是[Question:Questionobject],我们可以修改模型类,使其输出更为易懂的描述。修改模型类:
fromdjango.dbimportmodels
classQuestion(models.Model):
#...
def__str__(self):#__unicode__onPython2
returnself.question_text
classChoice(models.Model):
#...
def__str__(self):#__unicode__onPython2
returnself.choice_text
接下来继续测试:
frompolls.modelsimportQuestion,Choice
#Makesureour__str__()additionworked.
Questio