0

我创建了一个 django 项目,该项目使用登录并检查用户是否是员工,以便执行一些视图并呈现一些页面。代码效果很好。我想创建一个客户端程序,让我们说在 Gtk 中连接到 django 项目并使用 api 从 db 获取信息。api 可以很简单,我的 Django 项目中没有很多模型。我知道有一些很棒的应用程序可以创建像 TasyPie 这样的 api,但我认为我需要一些更简单的东西。不过我的问题是:我的计划是使用 urllib2 从 django 视图中获取响应

但我的问题是这个。如何检查用户是否使用 urllib2 登录。我的意思是 Django 有 request.user 方法。我可以在 Django 之外使用它吗?或者我是否需要在每个请求中始终发送用户名和密码,并让 django 检查用户是否是经过身份验证的员工等?

例如,我在想这样的 django 视图

def get_some_data(request):
    user = request.user
    if user.is_authenticated():
        return some json_data

和 urllib2 脚本

data = some_data_to_post_dict
data = urllib.urlencode(data)
req = urllib2.Request('http://127.0.0.1:8000/get_some_data.html')
resp = urllib2.urlopen(req)

这就是我的想法的基本逻辑。我是否需要将用户名和密码放入我的 urllib2 脚本的数据中,并在对 api 的每个请求中检查它们?

例如 django 视图

def get_some_data(request):
    if request.method = 'POST':
        username = request['username']
        password = request.['password']
        user = authenticate(username=username, password=password) #do i need that in every view of my api's?
        if user_loggedin:
            return json_data

urllib2 脚本

data = {'username'='some_username', 'password'='some_password', other_data} #do i have to always include username and password on my data from urllib2 script?
data = urllib.urlencode(data)
req = urllib2.Request('http://127.0.0.1:8000/get_some_data.html')
resp = urllib2.urlopen(req)
4

1 回答 1

0

您可以抓取并设置会话 cookie,这是浏览器在您登录时所做的,但这正是 sweetpie 和 django rest 框架的用例。它们都比您在这里计划的更容易使用(即使对于小型项目)

于 2013-10-13T09:47:05.697 回答