小编mun*_*ntu的帖子

Django使用参数返回redirect()

在我的视图函数中,我想调用另一个视图并将数据传递给它:

return redirect('some-view-name', backend, form.cleaned_data)
Run Code Online (Sandbox Code Playgroud)

,其中后端是registration.backends对象,而form.cleaned_data是表单数据的字典(但必须以*args或**kwargs的形式发送,以防止Don't mix *args and **kwargs in call to reverse()!出现错误).从我在文档中找到的内容:

def my_view(request):
    ...
    return redirect('some-view-name', foo='bar')
Run Code Online (Sandbox Code Playgroud)

看起来我需要提供'some-view-name'参数,但它只是视图函数的名称,还是url的名称?所以我想使它类似于在django-registration中完成的方式,其中:

to, args, kwargs = backend.post_registration_redirect(request, new_user)
return redirect(to, *args, **kwargs)

def post_registration_redirect(self, request, user):
    return ('registration_complete', (), {})
Run Code Online (Sandbox Code Playgroud)

好的,我现在可以直接调用我的视图功能,还是需要提供一个网址?更重要的是,我的funciotn调用(以及需要时的URL)应该是什么样的?后端和cleaning_data都只是通过此视图传递以供以后使用.我试过这个,但不合适:

url(r'^link/$', some-view-name)   
def some-view-name(request, *args):
Run Code Online (Sandbox Code Playgroud)

除此之外:

return redirect('some_url', backend=backend, dataform.cleaned_data) 
url(r'^link/$', some-view-name)    
def some-view-name(request, backend, data):
Run Code Online (Sandbox Code Playgroud)

还是NoReverseMatch.但是在django-registration中,我看到过这样的事情:

url(r'^register/$',register,{'backend': 'registration.backends.default.DefaultBackend'}, name='registration_register'),

def register(request, backend, success_url=None, form_class=None,
             disallowed_url='registration_disallowed',
             template_name='user/login_logout_register/registration_form.html',
             extra_context=None):
Run Code Online (Sandbox Code Playgroud)

python django redirect parameter-passing

70
推荐指数
3
解决办法
12万
查看次数

在django/python中检查电子邮件的有效性

我写了一个函数,用于添加电子邮件到新闻通讯库.直到我添加检查已发送电子邮件的有效性,它才能完美运行.现在,每次我收到"错误的电子邮件"作为回报.任何人都可以在这看到任何错误吗?使用的正则表达式是:

\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b它是100%有效(http://gskinner.com/RegExr/),但我可能使用它错了,或者它可能是一些逻辑错误:

def newsletter_add(request):
    if request.method == "POST":   
        try:
            e = NewsletterEmails.objects.get(email = request.POST['email'])
            message = _(u"Email is already added.")
            type = "error"
        except NewsletterEmails.DoesNotExist:
            if validateEmail(request.POST['email']):
                try:
                    e = NewsletterEmails(email = request.POST['email'])
                except DoesNotExist:
                    pass
                message = _(u"Email added.")
                type = "success"
                e.save()
            else:
                message = _(u"Wrong email")
                type = "error"

import re

def validateEmail(email):
    if len(email) > 6:
        if re.match('\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b', email) != None:
            return 1
    return 0
Run Code Online (Sandbox Code Playgroud)

python regex email django validation

69
推荐指数
4
解决办法
7万
查看次数

带有附加参数的表单的__init__方法

我正在调用我的表单,附加参数'validate:

form = MyForm(request.POST, request.FILES, validate=True)

我应该如何编写form的init方法来访问我的表单体内的这个参数(例如在_clean方法中)?这就是我想出的:

def __init__(self, *args, **kwargs):
    try:
        validate = args['validate']
    except:
        pass           
    if not validate:
        self.validate = False
    elif:
        self.validate = True
    super(MyForm, self).__init__(*args, **kwargs) 
Run Code Online (Sandbox Code Playgroud)

python django initialization django-forms

4
推荐指数
1
解决办法
2399
查看次数

函数需要2个参数,应该只有一个

我有这样的功能friend_exists:

def friend_exists(request, pid):
    result = False
    try:
        user = Friend.objects.get(pid=pid)
    except Friend.DoesNotExist:
        pass  
    if user:
        result = True

    return result
Run Code Online (Sandbox Code Playgroud)

我从我的其他函数调用它:

exists = friend_exists(form.cleaned_data['pid'])
Run Code Online (Sandbox Code Playgroud)

哪里pid = u'12345678'.为什么我得到:

Exception Type: TypeError at /user/register/
Exception Value: friend_exists() takes exactly 2 arguments (1 given)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

python django function argument-passing

-1
推荐指数
1
解决办法
1154
查看次数