django add()正好接受2个参数(给定3个)

django add()正好接受2个参数(给定3个),django,Django,models.py #!/usr/bin/env python from django.db import models from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer import os import json import sys import tempfile import traceback import re import psycopg2 SUCCESS = 1 ERR_B

models.py

#!/usr/bin/env python
from django.db import models
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import os
import json
import sys
import tempfile
import traceback
import re
import psycopg2

SUCCESS               =   1 
ERR_BAD_CREDENTIALS   =  -1  
ERR_USER_EXISTS       =  -2  
ERR_BAD_USERNAME      =  -3  
ERR_BAD_PASSWORD      =  -4

class UsersModel(models.Model):
    user = models.CharField(primary_key=True, max_length=128)
    password = models.CharField(max_length=128)
    count = models.IntegerField()       

    def login(user1, password1):
        try:
            con = psycopg2.connect(database='test', user='jeffrey') 
            cur = con.cursor()
            cur.execute('SELECT user FROM UsersModel WHERE user1=user AND password1=password;')
            rows = cur.fetchall()
            print rows
            if len(rows) == 1:
                #on success update the count and return the count
                cur.execute('UPDATE UsersModel SET count=count+1 WHERE user1=user AND password1=password;')
                cur.execute('SELECT count FROM UsersModel WHERE user1=user AND password1=password;')
                return cur.fetchone()[0]
            else:
                return ERR_BAD_CREDENTIALS

        except psycopg2.DatabaseError, e:
            print 'Error %s' % e    
        sys.exit(1)


    def add(user1, password1):
        try:
            if user1=='' or len(user1)>128:
                return ERR_BAD_USERNAME
            elif len(password1)>128:
                return ERR_BAD_PASSWORD 

            con = psycopg2.connect(database='test', user='jeffrey') 
            cur = con.cursor()
            cur.execute('SELECT user FROM login_UsersModel WHERE user1=user;')
            rows = cur.fetchall()
            if len(row) == 1:
                return ERR_USER_EXIST
            else:
                cur.execute('INSERT INTO login_UsersModel VALUES (user1, password1, 1);')
                cur.execute('SELECT count FROM login_UsersModel WHERE user1=user AND password1=password;')
                return cur.fetchone()[0]

        except psycopg2.DatabaseError, e:
            print 'Error %s' % e    
        sys.exit(1)

def TESTAPI_resetFixture(request):
        con = psycopg2.connect(database='test', user='jeffrey') 
        cur = con.cursor()
        cur.execute('DELETE FROM login_UsersModel')
        return SUCCESS
views.py

from django.shortcuts import render
from django.http import HttpResponse
from login.models import UsersModel
from django.utils import simplejson
import os
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def loginx(request):
    data = simplejson.loads(request.body)
    name = data['user']
    pw = data['password']
    x = UsersModel()
    code = x.login(name, pw)
    if code > 0:
        response_data = {'errCode':1, 'count':code}
        return HttpResponse(simplejson.dumps(response_data), content_type="application/json")
    else:
        response_data = {'errCode':code}
        return HttpResponse(simplejson.dumps(response_data), content_type="application/json")


@csrf_exempt
def addx(request):
    data = simplejson.loads(request.body)
    name = data['user']
    pw = data['password']
    x = UsersModel()
    code = x.add(name, pw)
    if code > 0:
        response_data = {'errCode':1, 'count':code}
        return HttpResponse(simplejson.dumps(response_data), content_type="application/json")
    else:
        response_data = {'errCode':code}
        return HttpResponse(simplejson.dumps(response_data), content_type="application/json")

@csrf_exempt
def TESTAPI_resetFixturex(request):
    x = UsersModel()
    code = x.TESTAPI_resetFixture()
    response_data = {'errCode': code}
    return HttpResponse(simplejson.dumps(response_data), content_type="application/json")

@csrf_exempt    
def unitTests(request):
os.system("make func_tests TEST_SERVER=localhost:8000")
return
url.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
from login.views import loginx
from login.views import addx
from login.views import TESTAPI_resetFixturex

admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    #url(r'^admin/', include(admin.site.urls)),rs
    url(r'^users/login', loginx),
    url(r'^users/add', addx),
    url(r'^TESTAPI/resetFixture', TESTAPI_resetFixturex)
    #url(r'^TESTAPI/unitTests', unitTests) 
)
我以前在stackoverflow上看到过类似的问题,但他们的解决方案无法帮助我并导致我出现其他错误。所以,是的,我不明白当我只把用户和密码作为我的参数时,如何给3个参数添加。有人能帮我吗。顺便说一句,我现在只测试视图中的add函数,使用:

curl-H“Content Type:application/json”-H“Accept:application/json”-X POST-d'{“user”:“test”,“password”:“test”}“localhost:8000/users/add-o test.html

实例(通常由
self
引用)被传递给类的每个实例方法。解释更多关于自我和报告的内容。此外,还有大量高质量的oop python教程

我假设
add
UsersModel
的方法(如果是,请更正缩进,因为它非常重要`)

在这种情况下,函数定义应该如下所示:

def添加(self、user1、password1):


此外,我认为这将是一个伟大的帮助做django教程。Django创建了一个数据库,允许您在不编写任何sql的情况下与数据库进行交互:)它非常容易使用。django还有一个内置模型,它提供了即时的身份验证和用户创建

您可能需要修复代码示例的缩进。看起来你在几点上损失了一个关卡。如果这里有缩进问题,请忽略它。我在这里复制并粘贴了代码,我还不熟悉如何将代码放在stackoverflow上,所以这里看起来可能很糟糕。但是我的实际代码上的缩进很好。我以前有缩进错误,我已经修复了,现在是这样。如果你的代码缩进不好,我们怎么知道它应该是什么样子?alite我相信我已经修复了缩进是的,很抱歉,这是我第一次在这里发布代码。所以,当我手动发布它时,格式化它有点麻烦。我以前看过发布的自我解决方案。我试过了。当我运行该测试时,我得到“出现了服务器错误。请与管理员联系。”因此,它没有多大帮助。@Jeff在您的设置中是
debug=True
?如果是,它将为您提供一个很好的回溯,而不是一般的错误消息debug=True。它过去是用来追踪的。你知道加法取2个参数的问题,但得到了3个参数。它通过输出的html文件进行了回溯。但问题是,一旦我做了自我测试,就发生了一个错误。