【问题标题】:Integrating Phone number app in django在 django 中集成电话号码应用程序
【发布时间】:2018-01-15 04:08:38
【问题描述】:

我是python的初学者。我正在尝试集成从以下网址安装的电话号码应用程序

https://github.com/stefanfoulis/django-phonenumber-field

参考网址是Good way to store phone numbers in django models

我在 settings.py 的已安装应用中添加了'phonenumber_field'

forms.py 代码如下所示

from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Div, Field
from ajax_select.fields import AutoCompleteSelectField, AutoCompleteField
from phonenumber_field.modelfields import PhoneNumberField
from . import models

class SignUpForm(forms.Form):
    first_name = forms.CharField(max_length=30)
    last_name = forms.CharField(max_length=30)
    phone_number = PhoneNumberField()

注册 html

{% extends "account/base.html" %}

{% load i18n crispy_forms_tags %}

{% block head_title %}{% trans "Signup" %}{% endblock %}

{% block content %}
<h1>{% trans "Sign Up" %}</h1>

<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p>

<form class="signup" id="signup_form" method="post" action="{% url 'account_signup' %}">
  {% csrf_token %}
  {{ form|crispy }}
  {% if redirect_field_value %}
  <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
  {% endif %}
  <button class="btn btn-success" type="submit">{% trans "Sign Up" %} <span class="fa fa-chevron-right"></span></button>
</form>

{% endblock %}

但是在我的注册表单中没有显示电话字段。是不是我必须在模型中调用该函数而不是在表单中。

非常感谢任何帮助。

【问题讨论】:

  • 请出示您的 html 模板
  • @BearBrown 我已经用 signup.html 代码编辑了帖子。
  • 您还应该更新您的问题,以包括您使用“crispy”进行表单呈现这一事实。
  • 你能不能把{{ form|crispy }}换成{{ form.as_p }}看看就行了

标签: python django


【解决方案1】:

您正在导入模型字段,而不是表单字段。

from phonenumber_field.modelfields import PhoneNumberField

模型字段是为了进入你的模型,而不是你的表单。

from phonenumber_field.modelfields import PhoneNumberField

class SignupModel:
    phone_number = PhoneNumberField()

然后您可以使用ModelForm 生成一个与您的模型具有所有相同字段的表单。

但是,如果您坚持手动构建表单,则需要导入表单字段。

from phonenumber_field.formfields import PhoneNumberField

class SignUpForm(forms.Form):
    phone_number = PhoneNumberField()

【讨论】:

  • 太棒了。有效。你解释的方式很棒。我不明白为什么我总是比阅读官方文档更了解 SO。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多