【问题标题】:Passing email to path in django将电子邮件传递到 django 中的路径
【发布时间】:2019-07-04 04:49:09
【问题描述】:

我有这样的代码:-

path(something/regex_email/, views.func, name="something"),

如果用户在 url 中输入任何电子邮件,例如 /anyemail/,那么用户应该被重定向到某个页面...

但它并没有将我重定向到该页面,我已经看到了一些关于此类问题的先前建议,但这些建议不起作用。

views.py

def users(request):
if request.method == 'POST':
    user_email = request.POST.get('').rsplit('/',1)
    print(user_email)
    email = UserApprovedModel.objects.get(email__exact=user_email)
    form = UserRegisterForm(request.POST)
    form.email = email
    if form.is_valid():
        obj = form.save()
        obj.org = request.user.profile.org
        obj.save()
        return redirect('login')
        # username = form.cleaned_data.get('username')
        # messages.success(request, f'Your account has been created! You are now able to log in')
        # return redirect('login')
else:
    form = UserRegisterForm()
user_org = request.user.profile.org
profiles = Profile.objects.filter(org = user_org)
context = {'form': form, 'user_org': user_org.name, 'profiles': profiles}
return render(request, 'users/register.html', context)

【问题讨论】:

  • 您遇到什么错误?这可能是您的正则表达式或视图中的问题。如果可以的话,请添加实际路径和查看代码。
  • re_path('users/(\w+|[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+) /$/', user_views.users, name='org-users'),
  • path('users/r"(^\S+@\S+)$"/', user_views.users, name='org-users'),
  • 我都试过了............

标签: django django-templates django-views django-urls django-registration


【解决方案1】:

你可以尝试添加路径:

path('something/<email>/', views.yourView, name='something')

然后您的视图可以将该电子邮件作为参数:

def yourView(request, email):

然后您可以按照您认为合适的方式处理该退货。几乎没有关于您要完成的工作的信息,很难给出更好的答案。希望这会有所帮助。

【讨论】:

  • 它只是视图中的一个注册页面,我无法显示它,但它工作正常,我只想知道如何使用诸如某事/anyemail/...之类的 url 重定向用户。 . 你说的另一件事是使用 '//' 但这仅在您已经将某些内容存储到模型的电子邮件字段时才有效............
  • @NikhilBhardwaj 什么?
  • Broo 就像一个电子邮件变量我如何使用它...... 表示存储在数据库中的变量
  • 好的,检查一下:--- 我想通过这个 url 'registration/some_email/' 重定向注册页面上的一个人,并通过那个 url 将该人重定向到注册页面...... ..........
  • @NikhilBhardwaj 好的,所以使用该变量您可以获得注册电子邮件,使用表单获取所有其他信息,然后保存新用户
【解决方案2】:

所以,我得到了我的答案,如果用户提供不在我的数据库中的有效电子邮件 ID,我希望在路径的末尾,所以我想在我想要的那个页面上重定向那个用户,所以我使用 re_path() 函数获得了该解决方案,该函数允许您提供正则表达式路径,所以这就是我使用它的方式:

from django.urls import path, include, re_path
from users.views import usersAcc

urlpatterns = [
re_path(r'^users/\w+|[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+$/', usersAcc, name='org-users'),
]

('something//', views.yourView, name='something')

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多