2017-08-07 13 views
0

私はPythonの初心者です。私は、次のURLからインストールPHONENUMBERアプリを統合しようとしていますdjangoに電話番号アプリを統合

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

参照URLは、私はsettings.pyでインストール済みのアプリケーションで'phonenumber_field'を追加したGood way to store phone numbers in django models

です。

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 %} 

のように見えます。しかし、私のサインアップフォームで何の電話フィールドshowing.Isは、それは私が代わりにモデル内の関数を呼び出すために持っていることはありませんフォームで。

ご協力いただきまして誠にありがとうございます。

+1

htmlテンプレートを表示してください。 –

+0

@BearBrown signup.htmlコードで投稿を編集しました。 –

+0

また、フォームのレンダリングに "鮮明"を使用しているという事実を含めるように質問を更新する必要があります。 – Soviut

答えて

3

フォームフィールドではなく、モデルフィールドをインポートしています。

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() 
+0

Brilliant。出来た。あなたが説明した方法は素晴らしいです。なぜ私は、公式の文書を読むよりも、ずっとよく理解しているわけではありません。 –