django-其他(内容多了再做分类)

基础

常用命令

django-admin startproject sitename 创建项目

python manage.py runserver 0.0.0.0 启动服务

python manage.py startapp appname 创建app

python manage.py makemigrations 检索数据库

python manage.py migrate 创建数据库

python manage.py createsuperuser 创建超级用户

配置文件

1、数据库

DATABASES = {

‘default‘: {

‘ENGINE‘: ‘django.db.backends.mysql‘,

‘NAME‘:‘dbname‘,

‘USER‘: ‘root‘,

‘PASSWORD‘: ‘xxx‘,

‘HOST‘: ‘‘,

‘PORT‘: ‘‘,

}

}

模板

TEMPLATE_DIRS = (

os.path.join(BASE_DIR,‘templates‘),

)

静态文件

STATICFILES_DIRS = (

os.path.join(BASE_DIR,‘static‘),

)

ajax

1、ajax提交提交单条数据到django

function AjaxSubmit(){

var host = "1.1.1.1";

var port = "9999";

$.ajax({

url: "/ajax_data/",

type: ‘POST‘,

data: {h:host, p:port},

success: function(arg){

}

});

}

django接收数据

def ajax_data(request):

print request.POST[‘h‘]

return HttpResponse(‘ok‘)

2、ajax提交包含多条数据的元祖

function AjaxSubmitSet(){

var array_users= [

{‘username‘: ‘alex‘, ‘age‘: 18},

{‘username‘: ‘rain‘, ‘age‘: 16},

{‘username‘: ‘eric‘, ‘age‘: 17}

];

$.ajax({

url: "/ajax_data_set/",

type: ‘POST‘,

tradition: true,

data: {data: JSON.stringify(array_users)},

success: function(arg){

// json.loads

var callback_dict = $.parseJSON(arg);

if(callback_dict.status){

alert(‘成功‘);

}else{

alert(callback_dict.error);

}

}

});

}

django接受数据

def ajax_data_set(request):

ret = {‘status‘: True, ‘error‘:""}

try:

print request.POST

except Exception,e:

ret[‘status‘] = False

ret[‘error‘] = str(e)

return HttpResponse(json.dumps(ret))

session

request.session 可以在视图中任何地方使用,它类似于python中的字典

session 默认有效时间为两周,可以在 settings.py 中修改默认值

# 创建或修改 session:

request.session[key] = value

# 获取 session:

request.session.get(key,default=None)

# 删除 session

del request.session[key] # 不存在时报错

用户认证

登入一个用户

如果你有一个认证了的用户,你想把它附带到当前的会话中 - 这可以通过login()函数完成。

login()

从视图中登入一个用户,请使用login()。它接受一个HttpRequest对象和一个User对象。login()使用Django的会话框架来将用户的ID保存在会话中。

注意任何在匿名会话中设置的数据都会在用户登入后的会话中都会记住。

下面的示例向你演示如何使用authenticate() 和login():

from django.contrib.auth import authenticate, login

def my_view(request):

username = request.POST[‘username‘]

password = request.POST[‘password‘]

user = authenticate(username=username, password=password)

if user is not None:

if user.is_active:

login(request, user)

# Redirect to a success page.

else:

# Return a ‘disabled account‘ error message

else:

# Return an ‘invalid login‘ error message.

Web请求中的认证

Django使用会话和中间件来拦截request 对象到认证系统中。

它们在每个请求上提供一个request.user属性,表示当前的用户。如果当前的用户没有登入,该属性将设置成AnonymousUser的一个实例,否则它将是User的实例。

你可以通过is_authenticated()区分它们,像这样:

if request.user.is_authenticated():

# Do something for authenticated users.

else:

# Do something for anonymous users.

如何登出一个用户

logout()

若要登出一个已经通过django.contrib.auth.login()登入的用户,可以在你的视图中使用django.contrib.auth.logout()。 它接收一个HttpRequest对象且没有返回值。例如:

from django.contrib.auth import logout

def logout_view(request):

logout(request)

只允许登录的用户访问

原始的方法

from django.conf import settings

from django.shortcuts import redirect

def my_view(request):

if not request.user.is_authenticated():

return redirect(‘%s?next=%s‘ % (settings.LOGIN_URL, request.path))

login_required 装饰器

login_required([redirect_field_name=REDIRECT_FIELD_NAME, login_url=None])[source]

login_required()完成下面的事情:

如果用户没有登入,则重定向到settings.LOGIN_URL,并传递当前查询字符串中的绝对路径。例如:/accounts/login/?next=/polls/3/。

如果用户已经登入,则正常执行视图。视图的代码可以安全地假设用户已经登入。

默认情况下,在成功认证后用户应该被重定向的路径存储在查询字符串的一个叫做"next"的参数中。如果对该参数你倾向使用一个不同的名字,login_required()带有一个可选的redirect_field_name参数:

from django.contrib.auth.decorators import login_required

@login_required(redirect_field_name=‘my_redirect_field‘)

def my_view(request):

...

注意,如果你提供一个值给redirect_field_name,你非常可能同时需要自定义你的登录模板,因为存储重定向路径的模板上下文变量将使用redirect_field_name值作为它的键,而不是默认的"next"。

login_required()还带有一个可选的login_url参数。例如:

from django.contrib.auth.decorators import login_required

@login_required(login_url=‘/accounts/login/‘)

def my_view(request):

...

注意,如果你没有指定login_url参数,你需要确保settings.LOGIN_URL与你的登录视图正确关联。例如,使用默认值,可以添加下面几行到你的URLconf中:

from django.contrib.auth import views as auth_views

url(r‘^accounts/login/$‘, auth_views.login),

settings.LOGIN_URL同时还接收视图函数名和命名的URL模式。这允许你自由地重新映射你的URLconf中的登录视图而不用更新设置。

时间: 2024-10-28 11:09:50

django-其他(内容多了再做分类)的相关文章

想提升工作效率,就別再做这七件事

试想一位小公司老板每日孜孜不倦地工作,为何不能从为数众多的竞争者脱颖而出? 一位创业家可以不眠不休一天工作24 小时,整整一周不休假. 然而,时间有限,且竞争者却永远可以投入更多钱与心力,让竞争更剧烈.那么,为什么某些小型新创公司可以完成许多大型企业无法完成的事情呢? ●Instagram──只有13 名员工却被Facebook 用几十亿买下的公司. ●Snapchat──只有30 名员工却拒绝科技巨人Facebook.Google 的并购交易. 它们的成功部分来自于幸运──其余则是因为效率 .

20140530-MySQL插入中文问题再做笔记

20140530-MySQL插入中文问题再做笔记 1.脚本语句 导入之前,先charset gbk. 修改表字段编码: 注意:这里用导入的方式插入的数据,控制台会报错.在我们的客户端工具中执行,就不会报错了. 2.MyBatis中,xml文件引入成为mapper的配置: 3.写junit测试类的时候,中文数据不能正常读取: 解决办法:字符串连接参数要添加一下. 20140530-MySQL插入中文问题再做笔记,布布扣,bubuko.com

[再做01背包] POJ 3624 Charm Bracelet

接触动态规划的第一题是数塔问题,第二题就是01背包问题了. 当时看的懵懵懂懂,回过头来再看这道题还是非常简单的了. 用 dp[i][j] 表示取前i种物品,使它们总体积不超过j的最优取法取得的价值总和状态转移方程:dp[i][j] = max(dp[i-1][j],dp[i-1][j-cost[i]]+weight[i]) 1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstri

(数据挖掘-入门-5)基于内容的协同过滤与分类

1.动机 2.基于内容的分类器 3.python实现 一.动机 在前面的文章中介绍了基于用户和基于物品的协同过滤推荐方法,其实无论是基于用户还是基于物品,都是通过群体效应来进行推荐,因为衡量相似度的向量都是基于一定群体用户的评分,所以推荐出来的物品都是热门的流行的物品,对于一些冷门物品可能就无法收到亲睐. 而一个好的推荐系统,不仅能为用户发现热门流行的感兴趣物品,也能为用户提供自己也不了解的但也会感兴趣的物品,即冷门的物品,这样既有益于用户,也照顾了内容提供商. 因此,本文将介绍一种基于内容即物

2.4.4.3、Django用user表last_name字段做权限控制

这不是最好的方法! 数据库User表中因为是系统初始化的表,如果添加额外的字段需要修改django源文件,不利于移植,为避免带来其他问题,可以使用last_name字段做为权限控制,当然也可以用profile方法为user表添加新字段(对于user表示一对一关系,但不是在User表中),session在用户登录之后会一直存储user的信息,所以用user表中的字段在html中引用实现更简单一点(group可以在视图里使用) 如下图: 在http://10.1.1.145:8000/admin/a

caffe使用自己的数据做分类

这里只举一个例子: Alexnet网络训练自己数据的过程 用AlexNet跑自己的数据 参考1:http://blog.csdn.net/gybheroin/article/details/54095399 参考2:http://www.cnblogs.com/alexcai/p/5469436.html 1,准备数据: 在caffe根目录下data文件夹新建一个文件夹,名字自己起一个就行了,我起的名字是food,在food文件夹下新建两个文件夹,分别存放train和val数据, 在train文

Django - 聚合内容 RSS/Atom

Django提供了一个高层次的聚合内容框架,让我们创建RSS/Atom变得简单,你需要做的只是编写一个简单的Python类. 一.范例 要创建一个feed,只需要编写一个Feed类,然后设置一条指向Feed实例的URLconf就可以了,非常简单,下面是一个示例,演示了某站点的最近五条新闻记录: from django.contrib.syndication.views import Feed from django.urls import reverse from policebeat.mode

小内容将成新主流,内容产业巨变再起?

前不久逻辑思维与papi酱分道扬镳,让很多人对自媒体内容创业开始产生了怀疑.不过papi酱给瑞士顶级奢侈品手表积家代言又重新点燃了大家对自媒体第二春到来的希望之火. 而就在前几日,在内容产业有个新词语--"小内容"却开始流行了起来.阿里巴巴文化娱乐集团 移动事业群总裁何小鹏在钛媒体2016T-ADGE年度盛典上提出"小内容"的说法,并由此引发了业内外人士对于小内容时代的高度关注.Papi酱与积家的深度合作,恰恰从侧面应证了小内容时代的价值. 在何小鹏看来:小内容正在

[转]kaldi基于GMM做分类问题

转自:http://blog.csdn.net/zjm750617105/article/details/55211992 对于每个类别的GMM有几种思路: 第一是将所有训练数据按类别分开,每类的数据训练一个GMM模型 第二是将所有的数据训练一个UBM模型,然后将训练数据按类别分开,用MAP去训练每个类别的GMM(对角UBM的MAP貌似kaldi 没有) 第三就是将所有的数据训练一个UBM模型,然后不做MAP,直接用训好的UBM所GMM的初始值,然后将所有训练数据按类别分开,训练三个GMM模型(